章
目
录
PHP允许我们使用json_encode()和json_decode()函数来编码和解码JSON。
1.PHP json_encode
json_encode()函数返回一个值的JSON表示。换句话说,它将包含数组的PHP变量转换为JSON。
语法:
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
- 参数说明如下:
$value:要转换的变量,变量可以是任意数据类型; - $depth:可选参数,用来设置递归的最大深度,它的值必须大于 0,默认值为 512,同 $options 参数一样,该参数同样不怎么使用。
- $options:可选参数,默认值为 0,可选值为以下:
PHP 常量:JSON_FORCE_OBJECT、JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS、JSON_INVALID_UTF8_IGNORE、JSON_INVALID_UTF8_SUBSTITUTE、 JSON_NUMERIC_CHECK、JSON_PARTIAL_OUTPUT_ON_ERROR、JSON_PRESERVE_ZERO_FRACTION、JSON_PRETTY_PRINT、JSON_UNESCAPED_LINE_TERMINATORS、JSON_UNESCAPED_SLASHES、JSON_UNESCAPED_UNICODE、JSON_THROW_ON_ERROR。
关于这些常量了解即可,一般不怎么使用,它们的具体含义您可以通过 JSON 常量查阅;
若转换成功,json_encode() 函数会返回字符串类型的转换结果,若转换失败,则返回 false。
PHP json_encode示例1
让我们看一个编码JSON的示例。
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
输出:
{"a":1,"b":2,"c":3,"d":4,"e":5}
PHP json_encode示例2
让我们看一个编码JSON的示例。
<?php
$arr2 = array('firstName' => 'Rahul', 'lastName' => 'Kumar', 'email' => 'rahul@gmail.com');
echo json_encode($arr2);
?>
输出:
{"firstName":"Rahul","lastName":"Kumar","email":"rahul@gmail.com"}
2. PHP json_decode
json_decode()函数解码JSON字符串。换句话说,它将JSON字符串转换为PHP变量。
语法:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
参数说明如下:
- $json:必填参数,要解析的 JSON 字符串;
- $assoc:可选参数,默认值为 false,若将值设置为 true,那么 json_decode() 函数将返回一个数组;
- $depth:可选参数,用来设置递归的最大深度,默认值为 512,也可以设置为其它大于 0 的值;
- $options:可选参数,默认值为 0,可选值为 JSON_BIGINT_AS_STRING、JSON_INVALID_UTF8_IGNORE、JSON_INVALID_UTF8_SUBSTITUTE、JSON_OBJECT_AS_ARRAY、JSON_THROW_ON_ERROR 等常量,可以同时设置多个常量,常量之间使用竖线
|
进行分隔。
若解析成功,json_decode() 函数会返回 JSON 中的数据,若解析失败,或者 JSON 的数据深度超过了递归的限制,则返回 null。
PHP json_decode示例1
让我们看一个解码JSON字符串的示例。
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json, true));//true 表示返回的对象将被转换为关联数组
?>
输出:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
PHP json_decode示例2
让我们看一个解码JSON字符串的示例。
<?php
$json2 = '{"firstName" : "Rahul", "lastName" : "Kumar", "email" : "rahul@gmail.com"}';
var_dump(json_decode($json2, true));
?>
输出:
array(3) {
["firstName"]=> string(5) "Rahul"
["lastName"]=> string(5) "Kumar"
["email"]=> string(15) "rahul@gmail.com"
}