PHP JSON的解析和创建
PHP 中提供了 json_encode() 和 json_decode() 两个函数分别创建和解析 JSON 数据,其中:
json_encode():可以将变量转换为 JSON 格式;
json_decode():可以对 JSON 格式的字符串进行解析。
json_encode()
json_encode() 函数能够将一个 PHP 变量转换为 JSON 数据,其语法格式如下:json_encode(mixed $value, int $options = 0, int $depth = 512): string | 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_PRESERVE_ZERO_FRACTION、JSON_PRETTY_PRINT、JSON_UNESCAPED_LINE_TERMINATORS、JSON_UNESCAPED_SLASHES、JSON_UNESCAPED_UNICODE、JSON_THROW_ON_ERROR。关于这些常量了解即可,一般不怎么使用,它们的具体含义您可以通过 JSON 常量查阅;
$depth:可选参数,用来设置递归的深度,它的值必须大于 0,默认值为 512,同 $options 参数一样,该参数同样不怎么使用。
若转换成功,json_encode() 函数会返回字符串类型的转换结果,若转换失败,则返回 false。
【示例】使用 json_encode() 函数将 PHP 变量转换为 JSON 格式:
<?php
$arr = [
"title" => "JSON教程",
"author" => "C语言中文网",
"url" => "http://c.biancheng网站站点" rel="nofollow" />
{"title":"JSON\u6559\u7a0b","author":"C\u8bed\u8a00\u4e2d\u6587\u7f51","url":"http:\/\/c.biancheng网站站点" rel="nofollow" />
<?php
$arr = [
"title" => "JSON教程",
"author" => "C语言中文网",
"url" => "http://c.biancheng网站站点" rel="nofollow" />
{"title":"JSON教程","author":"C语言中文网","url":"http:\/\/c.biancheng网站站点" rel="nofollow" />
参数说明如下:json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0): mixed
$json:必填参数,要解析的 JSON 字符串;
$assoc:可选参数,默认值为 false,若将值设置为 true,那么 json_decode() 函数将返回一个数组;
$depth:可选参数,用来设置递归的深度,默认值为 512,也可以设置为其它大于 0 的值;
|
进行分隔。有关上述常量的含义,您可以通过 PHP 预定义常量查阅。若解析成功,json_decode() 函数会返回 JSON 中的数据,若解析失败,或者 JSON 的数据深度超过了递归的限制,则返回 null。
【示例】使用 json_decode() 函数解析 JSON 数据:
<?php
$str = '{"title":"JSON教程","author":"C语言中文网","url":"http:\/\/c.biancheng网站站点" rel="nofollow" />
array(4) {
["title"]=>
string(10) "JSON教程"
["author"]=>
string(16) "C语言中文网"
["url"]=>
string(23) "http://c.biancheng网站站点" rel="nofollow" />