浅析PHP中json_encode与json_decode的区别


Posted in PHP onJuly 15, 2020

浅析PHP中json_encode与json_decode的区别

一、json_encode() 对变量进行JSON编码

  • 语法:json_encode($value[,$options=0])
  • 注意:  1、$value为要编码的值,且该函数只对UTF8编码的数据有效;
                 2、options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP,

    JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT;

       3、第二个参数一般不需要;

       4、json数据其实就是一个string,可以用var_dump()打印出来看数据类型;

       5、执行成功返回JSON数据,否则返回FALSE。

     

示例:

$book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
$json = json_encode($book);
echo $json;

浏览器打印出的结果如下:

{"a":"xiyouji","b":"sanguo","c":"shuihu","d":"hongloumeng"}

二、json_decode() 对JSON数据进行解码,转换为PHP变量

  • 语法:json_decode($json[,$assoc=false[,$depth=512[,$options=0]]])
  • 注意:1、$json 为待解码的数据,必须为utf8编码的数据;

     2、$assoc 值为TRUE时返回数组,FALSE时返回对象;

     3、$depth 为递归深度;

     4、$option二进制掩码,目前只支持 JSON_BIGINT_AS_STRING;

     5、一般只用前面两个参数,如果要数据类型的数据要加一个参数true。

示例:

$book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
  $json = json_encode($book);
  
  $array = json_decode($json,TRUE);
  $obj = json_decode($json);
  var_dump($array);
  var_dump($obj);

浏览器打印出的结果如下:

array(4) { ["a"]=> string(7) "xiyouji" ["b"]=> string(6) "sanguo" ["c"]=> string(6) "shuihu" ["d"]=> string(11) "hongloumeng" }
object(stdClass)#2 (4) { ["a"]=> string(7) "xiyouji" ["b"]=> string(6) "sanguo" ["c"]=> string(6) "shuihu" ["d"]=> string(11) "hongloumeng" }

两个结果看起来没多大区别,但调用里面的元素时,array和obj的方式是不同的。

$book = array('a'=>'xiyouji','b'=>'sanguo','c'=>'shuihu','d'=>'hongloumeng');
  $json = json_encode($book);
  
  $array = json_decode($json,TRUE);
  $obj = json_decode($json);
  var_dump($array['b']);//调用数组元素
  echo '<br/>';
  var_dump($obj->c);//调用对象元素

 打印结果如下:

string(6) "sanguo" string(6) "shuihu"

到此这篇关于浅析PHP中json_encode与json_decode的区别的文章就介绍到这了,更多相关PHP json_encode与json_decode内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
用PHP实现文件上传二法
Oct 09 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
php 购物车完整实现代码
Jun 05 PHP
Php-Redis安装测试笔记
Mar 05 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
解决Laravel5.5下的toArray问题
Oct 15 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 #PHP
PHP number_format函数原理及实例解析
Jul 14 #PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 #PHP
PHP基于array_unique实现二维数组去重
Jul 14 #PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 #PHP
通过实例解析PHP数据类型转换方法
Jul 11 #PHP
PHP var关键字相关原理及使用实例解析
Jul 11 #PHP
You might like
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python实现贪吃蛇游戏
2020/03/21 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
什么是python的id函数
2020/06/11 Python
次世代生活态度:Hypebeast
2018/07/05 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
高职教师岗位职责
2013/12/24 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
会计稽核岗位职责
2015/04/13 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技