📅  最后修改于: 2023-12-03 14:45:11.931000             🧑  作者: Mango
当需要将一个 JSON 字符串转换为 PHP 数组或对象时,可以使用 PHP 的 json_decode
函数。
mixed json_decode( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
$json
:需要解码的 JSON 字符串。$assoc
:可选,如果为 TRUE
,则返回结果为数组形式;如果为 FALSE
,则返回结果为对象形式。默认为 FALSE
。$depth
:可选,指定解码的最大深度。默认为 512。$options
:可选,指定解码时的一些选项。例如,使用 JSON_BIGINT_AS_STRING
将大整数转换为字符串。默认为 0。<?php
$json = '{"name": "Alice", "age": 20, "friends": [{"name": "Bob", "age": 21}, {"name": "Charlie", "age": 22}]}';
$assoc = json_decode($json, true);
$object = json_decode($json);
var_dump($assoc);
/*
array(3) {
["name"]=>
string(5) "Alice"
["age"]=>
int(20)
["friends"]=>
array(2) {
[0]=>
array(2) {
["name"]=>
string(3) "Bob"
["age"]=>
int(21)
}
[1]=>
array(2) {
["name"]=>
string(7) "Charlie"
["age"]=>
int(22)
}
}
}
*/
var_dump($object);
/*
class stdClass#1 (3) {
public $name =>
string(5) "Alice"
public $age =>
int(20)
public $friends =>
array(2) {
[0] =>
class stdClass#2 (2) {
public $name =>
string(3) "Bob"
public $age =>
int(21)
}
[1] =>
class stdClass#3 (2) {
public $name =>
string(7) "Charlie"
public $age =>
int(22)
}
}
}
*/
?>
以上示例中,我们将一个 JSON 字符串转换为了数组和对象形式,并使用 var_dump
函数展示了其结果。
如果 JSON 字符串不合法,或者解码失败,将返回 NULL
。
在使用 json_decode
函数时,应该先检查 JSON 字符串是否合法。可以使用 json_last_error
函数获取最后一次 JSON 解码的错误信息。例如:
<?php
$json = 'not a JSON string';
$data = json_decode($json);
if(json_last_error() !== JSON_ERROR_NONE) {
echo 'JSON string is not valid';
}
?>
上述代码将输出 JSON string is not valid
。