浅析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之面向对象
May 15 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
ThinkPHP之getField详解
Jun 20 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
php链表用法实例分析
Jul 09 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
Laravel实现表单提交
May 07 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 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若干单维数组遍历方法的比较
2011/09/20 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
浅谈PHP中的
2016/04/23 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
vue实现分页栏效果
2019/06/28 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python中isnumeric()方法的使用简介
2015/05/19 Python
基于python实现微信模板消息
2015/12/21 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
详解python运行三种方式
2019/05/13 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python安装requests库的实例代码
2019/06/25 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
毕业生造价工程师求职信
2013/10/17 职场文书
委托证明范本
2014/11/25 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
利用Python实现模拟登录知乎
2022/05/25 Python