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

json_decode对JSON格式的字符串进行编码而json_encode对变量进行 JSON
编码,需要的朋友可以参考下。

**1.json_decode()

1.json_decode()

**json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode — 对 JSON 格式的字符串进行编码

json_decode — 对 JSON 格式的字符串进行编码

说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

参数

参数

json
待解码的 json string 格式的字符串。

json
待解码的 json string 格式的字符串。

assoc
当该参数为 TRUE 时,将返回 array 而非 object 。

assoc
当该参数为 TRUE 时,将返回 array 而非 object 。

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

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

范例

范例

Example #1 json_decode() 的例子

Example #1 json_decode() 的例子

代码如下:

<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 
?>

<?php
$json = ‘{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>

上例将输出:

上例将输出:

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);

代码如下:

结果为:

object(stdClass)#1 (5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}

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] => ) )

array(5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}

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

 

echo json_decode($data,true);

代码如下:

结果:

$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] => 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()

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_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

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

json_encode — 对变量进行 JSON 编码

代码如下:

Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式

echo json_decode($data,true);

Report a bug 参数

结果:

value
待编码的 value ,除了resource 类型之外,可以为任何数据类型

代码如下:

该函数只能接受 UTF-8 编码的数据

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] => ) )

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.

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

Report a bug 返回值
编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。

**2.json_encode()

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 参数.

**json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

Report a bug 范例

json_encode — 对变量进行 JSON 编码

Example #1 A json_encode() 的例子

Report a bug 说明
string json_encode ( mixed $value [, int $options = 0 ] )
返回 value 值的 JSON 形式

<?php 
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); 

echo json_encode($arr); 
?>

Report a bug 参数

以上例程会输出:

value
待编码的 value ,除了resource 类型之外,可以为任何数据类型

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

该函数只能接受 UTF-8 编码的数据

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

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.

<?php 
$a = array('<foo>',"'bar'",'"baz"','&blong&', "xc3xa9"); 

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), "nn"; 

$b = array(); 

echo "Empty array output as array: ", json_encode($b), "n"; 
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "nn"; 

$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), "nn"; 

$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), "nn"; 
?>

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 参数.

Normal: ["<foo>","'bar'",""baz"","&blong&","u00e9"] 
Tags: ["u003Cfoou003E","'bar'",""baz"","&blong&","u00e9"] 
Apos: ["<foo>","u0027baru0027",""baz"","&blong&","u00e9"] 
Quot: ["<foo>","'bar'","u0022bazu0022","&blong&","u00e9"] 
Amp: ["<foo>","'bar'",""baz"","u0026blongu0026","u00e9"] 
Unicode: ["<foo>","'bar'",""baz"","&blong&","é"] 
All: ["u003Cfoou003E","u0027baru0027","u0022bazu0022","u0026blongu0026","é"] 

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"}

Report a bug 范例

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图