关于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 更新数据库中断的解决方法
Jun 05 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php下获取http状态的实现代码
May 09 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python去除扩展名的实例讲解
2018/04/23 Python
Django 用户认证组件使用详解
2019/07/23 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
大学生工作求职信
2014/06/23 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
运动会通讯稿200字
2015/07/20 职场文书
Django如何与Ajax交互
2021/04/29 Python
Python实现视频中添加音频工具详解
2021/12/06 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
MySQL GTID复制的具体使用
2022/05/20 MySQL
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang