博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php中json_decode()和json_encode()
阅读量:5462 次
发布时间:2019-06-16

本文共 5113 字,大约阅读时间需要 17 分钟。

1.json_decode()

json_decode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — 对 JSON 格式的字符串进行编码
说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
参数
json
待解码的 json string 格式的字符串。
assoc
当该参数为 TRUE 时,将返回 array 而非 object 。

返回值

Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

范例

Example #1 json_decode() 的例子

上例将输出:

object(stdClass)#1 (5) {
["a"] => int(1)["b"] => int(2)["c"] => int(3)["d"] => int(4)["e"] => int(5)}array(5) {["a"] => int(1)["b"] => int(2)["c"] => int(3)["d"] => int(4)["e"] => int(5)}
$data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]';echo json_decode($data);

结果为:

Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )

可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下

echo json_decode($data,true);

结果:

Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )

可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.

2.json_encode()

json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — 对变量进行 JSON 编码
Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式
Report a bug 参数
value
待编码的 value ,除了resource 类型之外,可以为任何数据类型
该函数只能接受 UTF-8 编码的数据
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, JSON_UNESCAPED_UNICODE.

Report a bug 返回值

编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。
Report a bug 更新日志
版本 说明
5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。
5.3.0 增加 options 参数.

Report a bug 范例

Example #1 A json_encode() 的例子

1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);echo json_encode($arr);?>

以上例程会输出:

{"a":1,"b":2,"c":3,"d":4,"e":5}

Example #2 json_encode() 函数中 options 参数的用法

',"'bar'",'"baz"','&blong&', "\xc3\xa9");echo "Normal: ", json_encode($a), "\n";echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";$b = array();echo "Empty array output as array: ", json_encode($b), "\n";echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";$c = array(array(1,2,3));echo "Non-associative array output as array: ", json_encode($c), "\n";echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";$d = array('foo' => 'bar', 'baz' => 'long');echo "Associative array always output as object: ", json_encode($d), "\n";echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";?>

以上例程会输出:

Normal: ["
","'bar'","\"baz\"","&blong&","\u00e9"]Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]Apos: ["
","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]Quot: ["
","'bar'","\u0022baz\u0022","&blong&","\u00e9"]Amp: ["
","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]Unicode: ["
","'bar'","\"baz\"","&blong&","é"]All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]Empty array output as array: []Empty array output as object: {}Non-associative array output as array: [[1,2,3]]Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}Associative array always output as object: {"foo":"bar","baz":"long"}Associative array always output as object: {"foo":"bar","baz":"long"}

Example #3 连续与非连续数组示例

"foo", 2=>"bar", 3=>"baz", 4=>"blong");var_dump($nonsequential,json_encode($nonsequential));echo PHP_EOL."删除一个连续数组值的方式产生的非连续数组".PHP_EOL;unset($sequential[1]);var_dump($sequential,json_encode($sequential));?>

以上例程会输出:

连续数组array(4) {[0]=>string(3) "foo"[1]=>string(3) "bar"[2]=>string(3) "baz"[3]=>string(5) "blong"}string(27) "["foo","bar","baz","blong"]"非连续数组array(4) {[1]=>string(3) "foo"[2]=>string(3) "bar"[3]=>string(3) "baz"[4]=>string(5) "blong"}string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}"删除一个连续数组值的方式产生的非连续数组array(3) {[0]=>string(3) "foo"[2]=>string(3) "baz"[3]=>string(5) "blong"}string(33) "{"0":"foo","2":"baz","3":"blong"}"
$obj->Name= 'a1';$obj->Number ='123';$obj->Contno= '000';echo json_encode($obj);

结果为:

{"Name":"a1","Number":"123","Contno":"000"}

转载于:https://www.cnblogs.com/showersun/p/3858862.html

你可能感兴趣的文章
第一讲 评估类模型之层次分析法
查看>>
评估类模型之优劣解距离法Topsis模型
查看>>
MNIST 数据集介绍
查看>>
浅谈response和request方法
查看>>
浮点数的二进制表示
查看>>
leetcode 173-Binary Search Tree Iterator(medium)
查看>>
【移动开发】Android中WIFI开发总结(二)
查看>>
beyond compare 数据对比工具
查看>>
python3链接oracle
查看>>
【NOIP2017】时间复杂度
查看>>
poj 3375 Network Connection
查看>>
C# 获取当前月第一天和最后一天
查看>>
shipin_beanshell_讲解
查看>>
购物小练习
查看>>
朴素贝叶斯应用:垃圾邮件分类
查看>>
vs code 快捷键大全
查看>>
mysql注意:
查看>>
[1,2,3,4,5,6,7,8] 转换成 [(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8)] ...
查看>>
彻底删除mysql 分类: database 201...
查看>>
ARM指令集中立即数寻址的范围
查看>>