函数名称:json_decode()
适用版本:PHP 5 >= 5.2.0, PHP 7
函数描述:json_decode() 函数用于将 JSON 格式的字符串转换为 PHP 变量。
用法: json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0): mixed
参数:
- $json (必需):要解码的 JSON 字符串。
- $assoc (可选):当该参数为 true 时,将返回关联数组;当该参数为 false 时,将返回对象。默认为 false。
- $depth (可选):指定最大解码深度。默认为 512。
- $options (可选):指定解码选项。默认为 0。
返回值: 解码成功时,将返回解码后的 PHP 变量。解码失败时,将返回 null。
示例:
解码 JSON 字符串为对象: $json_str = '{"name":"John", "age":30, "city":"New York"}'; $obj = json_decode($json_str); echo $obj->name; // 输出:John
解码 JSON 字符串为关联数组: $json_str = '{"name":"John", "age":30, "city":"New York"}'; $arr = json_decode($json_str, true); echo $arr["name"]; // 输出:John
解码包含嵌套数组的 JSON 字符串: $json_str = '{"name":"John", "age":30, "cities":["New York", "London", "Paris"]}'; $obj = json_decode($json_str); echo $obj->cities[0]; // 输出:New York
解码 JSON 字符串时设置解码选项: $json_str = '{"name":"John", "age":30, "city":"New York"}'; $obj = json_decode($json_str, false, 512, JSON_BIGINT_AS_STRING); echo $obj->age; // 输出:"30"(作为字符串类型输出)
注意事项:
- 该函数仅适用于解码 JSON 字符串,如果要将 PHP 变量编码为 JSON 字符串,需要使用 json_encode() 函数。
- 如果 JSON 字符串解码失败,将返回 null。可以通过使用 json_last_error() 和 json_last_error_msg() 函数获取解码错误的详细信息。
- 在 PHP 7 中,该函数支持解码更大深度的 JSON 字符串,默认为 512。在 PHP 5 中,默认深度为 128。可以通过修改 $depth 参数来自定义解码深度。
- 可以通过设置解码选项来改变解码行为,例如将大整数作为字符串类型输出(JSON_BIGINT_AS_STRING)。
- JSON 字符串中的特殊字符(如斜杠、引号等)将自动进行转义。