PHP 提供了两个函数 json_encode() 和 json_decode(),分别用于创建和解析 JSON 数据。
- json_encode():可以将变量转换为JSON格式。
- json_decode():允许您解析 JSON 格式的字符串。
json_encode()
json_encode() 函数可以将 PHP 变量转换为 JSON 数据。其语法为:
json_encode(混合$值,int $选项= 0,int $深度= 512):字符串| false
参数说明如下:
- $value:要转换的变量。变量可以是任何数据类型。
- $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_PRESER VE_ZERO_FRACTION、JSON_PRETTY_PRINT、JSON_UNESCAPED_LINE_TERMINATORS、JSON_UNESCAPED_SLASHES、JSON_UNESCAPED_UNICODE、JSON_THROW_ON_ERROR。了解这些常量就足够了,它们通常不经常使用,您可以通过JSON 常量查看具体含义。
- $深度:可选参数,用于设置递归的最大深度,其值必须大于0,默认值为512。与 $options 参数一样,该参数也很少使用。
json_encode()函数如果转换成功则返回字符串类型转换结果,如果转换失败则返回false。
[示例] 使用 json_encode() 函数将 PHP 变量转换为 JSON 格式。
<?php
$arr = [
"title" => "JSONチュートリアル",
"author" => "IT基礎",
"url" => "https://it-kiso.com/",
"catalogue" => [
"JSONとは",
"JSONPとは",
"JSON文法規則"
]
];
echo json_encode($arr);
?> 运行结果为:
{“标题”:“JSON \u30c1 \u30e5 \u30fc \u30c8 \u30ea \u30a2 \u30eb”,“作者”:“IT \ u57fa \ u790e”,“url”:“https://it-kiso.com/ “, “目录”:[“JSON \u3068 \u306f”, “JSONP \u3068 \u306f”,“JSON \u6587 \u6cd5 \u898f \u5247”]}
从执行结果可以看出,当使用json_encode()函数将变量转换为JSON数据时,变量中的汉字字符会被编码为Unicode字符(\uXXXX格式字符)。 json_encode( ) 函数的第二个参数可以设置为 JSON_UNESCAPED_UNICODE,如以下示例所示。
<?php
$arr = [
"title" => "JSONチュートリアル",
"author" => "IT基礎",
"url" => "https://it-kiso.com/",
"catalogue" => [
"JSONとは",
"JSONPとは",
"JSON文法規則"
]
];
echo json_encode($arr,JSON_UNESCAPED_UNICODE );
?> 运行结果为:
{“title”:”JSON 教程”,”author”:”IT 基础知识”,”url”:”https://it-kiso.com/”,”catalogue”:[“什么是 JSON”,”什么是JSONP?是”,”JSON语法规则”]}
json_解码()
json_decode() 函数可以解析 JSON 格式的字符串,并将解析结果保存到变量中,其语法如下:
json_decode(string $json, bool $assoc = false, int $深度 = 512, int $options = 0): 混合
参数说明如下:
- $json:必需参数,要解析的JSON字符串。
- $assoc:可选参数。默认值为 false。如果该值设置为 true,则 json_decode() 函数返回一个数组。
- $深度:可选参数。用于设置最大递归深度。默认值为512,您也可以设置大于0的值。
- $options:可选参数,默认值为0,可选值为JSON_BIGINT_AS_STRING、JSON_INVALID_UTF8_IGNORE、JSON_INVALID_UTF8_SUBSTITUTE、JSON_OBJECT_AS_ARRAY、JSON_THROW_ON_ERROR等常量。可以同时设置多个常量,常量之间用竖线
|分隔。以上常量的含义请参见PHP预定义常量。
如果解析成功,则 json_decode() 函数返回 JSON 格式的数据;如果解析失败,或者 JSON 数据的深度超过递归限制,则返回 null。
[示例] 使用 json_decode() 函数解析 JSON 数据。
<?php
$str = '{"title":"JSONチュートリアル","author":"IT基礎","url":"http:\/\/it-kiso.com\/","catalogue":["JSONとは","JSONPとは","JSON文法規則"]}';
echo "<pre>";
var_dump(json_decode($str, true));
?> 运行结果为:
数组(4){
[“标题”]=>
string(18) “JSON 教程”
[“作者”]=>
string(6) “IT 基础知识”
[“网址”]=>
字符串(21)“http://it-kiso.com/”
[“目录”]=>
数组(3){
[0]=>
string(10) “什么是 JSON?”
[1]=>
string(11) “什么是 JSONP”
[2]=>
string(14) “JSON 语法规则”
}
}




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

