您好,欢迎访问一九零五行业门户网

php中json_decode()和json_encode()的使用方法

json_decode对json格式的字符串进行编码而json_encode对变量进行 json 编码,需要的朋友可以参考下
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' => '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
}
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。
其它类似信息

推荐信息