关于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 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
生成缩略图
Oct 09 PHP
如何在PHP中进行身份认证
Oct 09 PHP
基于php缓存的详解
May 15 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
header导出Excel应用示例
Jan 24 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
Thinkphp 中 distinct 的用法解析
Dec 14 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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中的cookie
2006/11/26 PHP
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
javascript工具库代码
2012/03/29 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
用Pygal绘制直方图代码示例
2017/12/07 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
实例介绍Python中整型
2019/02/11 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
PyTorch预训练的实现
2019/09/18 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
python自动生成证件号的方法示例
2021/01/14 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
工商学院毕业生个人自我评价
2013/09/19 职场文书
护理学毕业生自荐信
2013/10/02 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
关于保护环境的标语
2014/06/09 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
移除Selenium中window.navigator.webdriver值
2022/06/10 Python