zhcn 编程语言 Web相关 HTML 非公開: 解析和创建 PHP JSON

解析和创建 PHP JSON

JSON(正式名称为JavaScript Object Notation)是一种轻量级、易于阅读和阅读的数据交换格式,广泛应用于Web开发中。本节向您展示如何在 PHP 中创建和解析 JSON 数据。

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 语法规则”
}
}

JSON(正式名称为JavaScript Object Notation)是一种轻量级、易于阅读和阅读的数据交换格式,广泛应用于Web开发中。本节向您展示如何在 PHP 中创建和解析 JSON 数据。

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 语法规则”
}
}