常用PHP函数之json_decode()解析JSON格式字符串
在PHP中,使用json_decode()函数可以将JSON格式的字符串解析成PHP对象或者数组。
json_decode()函数的语法如下:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
参数说明:
- $json:必需,要解码的JSON字符串。
- $assoc:可选,设置返回值是否作为关联数组,默认为false,返回对象。如果设置为true,返回关联数组。
- $depth:可选,设置解码的最大深度,默认为512。如果数据的嵌套深度超过该值,将会抛出一个JSON_ERROR_DEPTH错误。
- $options:可选,设置解码选项。可以是以下值的按位或(|)组合产生的常量:
- JSON_BIGINT_AS_STRING: 将大整数(int)以字符串形式返回,而不是默认的float形式。
- JSON_INVALID_UTF8_IGNORE:如果JSON字符串包含无效的UTF-8编码字符,忽略它们。这是PHP 5.3.3以上版本的特性。
- JSON_INVALID_UTF8_SUBSTITUTE:如果JSON字符串包含无效的UTF-8编码字符,将其替换为U+FFFD(?)字符。这是PHP 5.3.3以上版本的特性。
返回值说明:
如果解码成功,则返回解码得到的结果,可以是对象或者数组;如果解码失败,则返回NULL。
以下是一个例子,展示了如何使用json_decode()函数解析JSON格式的字符串:
$jsonStr = '{"name":"Tom","age":18,"hobbies":["reading","music","swimming"],"address":{"city":"Beijing","country":"China"}}';
$dataObj = json_decode($jsonStr);
// 使用对象方式访问解析得到的数据
echo $dataObj->name; // 输出:Tom
echo $dataObj->age; // 输出:18
echo $dataObj->hobbies[0]; // 输出:reading
echo $dataObj->address->city; // 输出:Beijing
$dataArr = json_decode($jsonStr, true);
// 使用数组方式访问解析得到的数据
echo $dataArr['name']; // 输出:Tom
echo $dataArr['age']; // 输出:18
echo $dataArr['hobbies'][1]; // 输出:music
echo $dataArr['address']['city']; // 输出:Beijing
上述例子中,首先定义了一个JSON格式的字符串,然后使用json_decode()函数将其解析成一个PHP对象和一个PHP数组。接着,通过对象方式和数组方式分别访问解析得到的数据。
使用json_decode()函数解析JSON格式的字符串,可以方便地将JSON数据转换成PHP对象或者数组,以便在PHP中进行操作和处理。
