浅析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
Nov 25 PHP
php下通过POST还是GET来传值
Jun 05 PHP
php结合表单实现一些简单功能的例子
Jun 04 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
php格式化时间戳
Dec 17 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
浅谈PHP封装CURL
Mar 06 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 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中ob_start()函数的用法
2013/06/24 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
vue实现列表拖拽排序的功能
2020/11/02 Javascript
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
面试求职的个人自我评价
2013/11/16 职场文书
给导游的表扬信
2014/01/10 职场文书
新领导上任欢迎词
2014/01/13 职场文书
同学聚会欢迎辞
2014/01/14 职场文书
运动会通讯稿50字
2014/01/30 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
工程承包协议书
2014/10/20 职场文书
挂职个人工作总结
2015/03/05 职场文书
考试没考好检讨书
2015/05/06 职场文书
离婚纠纷代理词
2015/05/23 职场文书
电工生产实习心得体会
2016/01/22 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
使用Redis实现实时排行榜功能
2021/07/02 Redis