欢迎访问宙启技术站
智能推送

PHP函数之json_decode函数的用法

发布时间:2023-06-20 17:00:51

JSON(JavaScript Object Notation)是一种轻量级数据交换格式,常用于前后端数据的传输,而PHP中json_decode函数就是用来解析JSON格式的数据,将其转化为PHP数组或对象。

json_decode函数的基本语法是:

mixed json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)

其中, 个参数$json是需要解析的JSON字符串,第二个参数$assoc表示转换后返回的数据类型,如果为true则返回数组,如果为false则返回对象。第三个参数$depth表示递归解析时的最大深度,如果超过了这个深度,则会返回null。第四个参数$options表示解析时的选项,目前主要有以下几个选项:

- JSON_HEX_QUOT:将双引号替换为\u0022;

- JSON_HEX_TAG:将<和>分别编码为\u003C和\u003E;

- JSON_HEX_AMP:将&编码为\u0026;

- JSON_HEX_APOS:将单引号编码为\u0027;

- JSON_NUMERIC_CHECK:将数字字符串转换为数字;

- JSON_PRETTY_PRINT:对json字符串进行格式化;

- JSON_UNESCAPED_UNICODE:不对中文进行编码。

下面我们通过实例来介绍json_decode函数的用法。

1. 将JSON字符串转为PHP数组

$json_str = '{"name":"Tom","age":18,"gender":"male","hobbies":["coding","basketball","reading"]}';
$arr = json_decode($json_str, true);
print_r($arr);

输出结果如下:

Array
(
    [name] => Tom
    [age] => 18
    [gender] => male
    [hobbies] => Array
        (
            [0] => coding
            [1] => basketball
            [2] => reading
        )

)

2. 将JSON字符串转为PHP对象

$json_str = '{"name":"Tom","age":18,"gender":"male","hobbies":["coding","basketball","reading"]}';
$obj = json_decode($json_str);
print_r($obj);

输出结果如下:

stdClass Object
(
    [name] => Tom
    [age] => 18
    [gender] => male
    [hobbies] => Array
        (
            [0] => coding
            [1] => basketball
            [2] => reading
        )

)

3. 设置解析选项

$json_str = '{"name":"Tom","age":18,"gender":"male","hobbies":["coding","basketball","reading"],"desc":"<p>Some text here<\/p>"}';
$obj = json_decode($json_str, false, 512, JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_AMP|JSON_HEX_QUOT|JSON_UNESCAPED_UNICODE);
print_r($obj);

输出结果如下:

stdClass Object
(
    [name] => Tom
    [age] => 18
    [gender] => male
    [hobbies] => Array
        (
            [0] => coding
            [1] => basketball
            [2] => reading
        )

    [desc] => <p>Some text here</p>
)

可以看到,使用JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_AMP|JSON_HEX_QUOT选项后,双引号、<、>、&和单引号都被转义编码,而使用JSON_UNESCAPED_UNICODE选项后,中文字符不被编码。

总结:

在PHP中,使用json_decode函数可以方便地将JSON格式的数据解析成PHP数组或对象,使得前后端之间数据的传输更加便捷。同时,也可以通过设置解析选项来控制解析的效果,如对特殊字符的编码方式,以及对中文的处理方式等。