关于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 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
非常实用的php验证码类
May 15 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
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的AES加密算法类
2015/03/12 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python selenium文件上传方法汇总
2020/11/19 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
500行python代码实现飞机大战
2020/04/24 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
狼和鹿教学反思
2014/02/05 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python