关于php中的json_encode()和json_decode()函数的一些说明


Posted in PHP onNovember 20, 2016

一,json语法( php中的json_decode($json)中的$json要符合json语法格式 )

① JSON可以表示三种类型的值

1,简单值。包括整型,字符串型,布尔值和null。例如:5,"hello world",true,null都是有效的JSON数据。其中JSON字符串必须使用双引号(单引号会导致语法错误)。

2,对象。如,{"name":"tony","age":15}。说明①要求属性必须用双引号(不加或者单引号都是错误的)②值可以是简单值(注意若值为字符串,必须用双引号,不能用单引号),也可以是复杂类型的值(对象或数组)。

3,数组。如,[25,true,"tony"]。说明:数组的值也可以是任意类型。

二,php定义对象字面量时,不支持直接书写,如{"a":"11","b":"22"}。这种书写方式在其他语言中被支持,在php中需要按如下方式定义:

$a = '{"a":"11","b":"22"}' ;【这是json字符串,不加外面的单引号则是json对象】

$b = json_decode($a);

这样$b就是对象字面量了。

三,上述三种数值类型经过json_encode($value)转化后,会输出json格式(此时类型为字符串),如"hello",{},[]。输出的结果可以在其他地方(javascrip,ios,java,php等等)被解析使用。

四,php中改进后的json_encode()和json_decode()函数,支持汉语(原生的不支持汉语)

注:php中不可直接改写原生函数,需要写在类里,作为类的一个方法

 

static function json_encode($input)
{
// 从 PHP 5.4.0 起, 增加了这个选项.
if (defined('JSON_UNESCAPED_UNICODE')) {
return json_encode($input, JSON_UNESCAPED_UNICODE);
}

if (is_string($input)) {
$text = $input;
$text = str_replace('\\', '\\\\', $text);
$text = str_replace(
array("\r", "\n", "\t", "\""),
array('\r', '\n', '\t', '\\"'),
$text);
return '"' . $text . '"';
} else if (is_array($input) || is_object($input)) {
$arr = array();
$is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));
foreach ($input as $k => $v) {
if($v == null){
$v = 'null';
}
if ($is_obj) {
$arr[] = self::json_encode($k) . ':' . self::json_encode($v);
} else {
$arr[] = self::json_encode($v);
}
}

if ($is_obj) {
return '{' . join(',', $arr) . '}';
} else {
return '[' . join(',', $arr) . ']';
}
} else {
return $input . '';
}
}

以上这篇关于php中的json_encode()和json_decode()函数的一些说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
ini_set的用法介绍
Jan 07 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 #PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 #PHP
php中strtotime函数性能分析
Nov 20 #PHP
php的socket编程详解
Nov 20 #PHP
PHP内置加密函数详解
Nov 20 #PHP
php PDO异常处理详解
Nov 20 #PHP
php.ini中date.timezone设置详解
Nov 20 #PHP
You might like
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
Python字符编码与函数的基本使用方法
2017/09/30 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Django中间件基础用法详解
2019/07/18 Python
django 信号调度机制详解
2019/07/19 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
基于python实现计算两组数据P值
2020/07/10 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
新手必备Python开发环境搭建教程
2021/05/28 Python
详解Python为什么不用设计模式
2021/06/24 Python
go开发alertmanger实现钉钉报警
2021/07/16 Golang