深度剖析:PHP中json_encode与json_decode
2024-08-29 22:38:54
一、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"
最新文章
- jsp 内置对象
- [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
- CentOS 6.x 一键安装PPTP VPN脚本
- 源码安装Apache,报错:Cannot use an external APR with the bundled APR-util和httpd: Could not reliably determine the server&#39;s fully qualified domain name, using
- part 设置
- CSS3 3D变换
- mysql Partition(分区)初探
- php 函数之 )_each()list()implode()explode()in_array()
- css中关于transform、transition、animate的区别
- AndroidUI的组成部分RoomButton
- There is no getter for property named &#39;XXX&#39; in &#39;class java.lang.String&#39;解决方法
- oracle 查询所有约束
- iOS.mach_msg_trap()
- STM32L476应用开发之七:流量的PID控制
- 20155208徐子涵 Exp4 恶意代码分析
- Hibernate 再接触 性能优化
- 在做销售录入界面时,如何使用dbgrid?(50分)
- 决策树分类算法及python代码实现案例
- elementUI和iview兼容么
- java jsp失效问题--待解决
热门文章
- MT【103】二阶递推找规律
- bzoj1047&;bzoj1012
- COCI 2018/2019 CONTEST #2 Solution
- c# 16进制byte转成int
- NIO[读]、[写]在同一线程(单线程)中执行,让CPU使用率最大化,提高处理效率
- 口琴练习部分 - 多孔单音奏法 &; 简单伴奏
- 【CSS】clear清除浮动
- django-simple-captcha 验证码插件
- Saltstack-API(十二)
- bzoj千题计划206:bzoj1076: [SCOI2008]奖励关