Php 简明教程
PHP – JSON
PHP 的标准发行版默认启用 JSON 支持。PHP 扩展实现 JavaScript 对象表示法 (JSON) 数据交换格式。PHP 解析器中的 JSON 扩展处理 JSON 数据。
JSON(JavaScript 对象表示法)是一种轻量级、基于文本、与语言无关的数据交换格式。JSON 为便携式表示结构化数据定义了一组较小的格式化规则。它是一种基于文本的数据格式,对于人类和机器来说都很容易读取。
PHP 版本 5.2 及更高版本中的 JSON 扩展提供了许多预定义的常量、JSON 相关函数以及 JsonException 类。
PHP JSON Functions
PHP 具有以下 JSON 函数 −
json_encode()
此函数返回一个字符串,其中包含所提供值的 JSON 表示形式。如果参数是数组或对象,则会递归序列化。
json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false
json_decode()
此函数采用 JSON 编码的字符串,并将其转换为 PHP 值。
json_decode(
string $json,
?bool $associative = null,
int $depth = 512,
int $flags = 0
): mixed
当此函数的关联参数为 true 时,JSON 对象将作为关联数组返回;当为 false 时,JSON 对象将作为对象返回。
编码/解码操作受所提供标志的影响。预定义常量及其整数值如下 −
Predefined Constant |
Values |
JSON_HEX_TAG |
1 |
JSON_HEX_AMP |
2 |
JSON_HEX_APOS |
4 |
JSON_HEX_QUOT |
8 |
JSON_FORCE_OBJECT |
16 |
JSON_NUMERIC_CHECK |
32 |
JSON_UNESCAPED_SLASHES |
64 |
JSON_PRETTY_PRINT |
128 |
JSON_UNESCAPED_UNICODE |
256 |
json_last_error_msg()
此函数返回最近 json_encode() 或 json_decode() 调用的错误字符串。
json_last_error_msg(): string
如果没有发生错误,则返回“No error”消息。
json_last_error()
此函数返回一个整数。
json_last_error(): int
该函数返回一个整数,对应于以下常量之一 −
Sr.No |
Constant & Meaning |
1 |
JSON_ERROR_NONE No error has occurred |
2 |
JSON_ERROR_DEPTH 已超过最大栈深度 |
3 |
JSON_ERROR_STATE_MISMATCH Invalid or malformed JSON |
4 |
JSON_ERROR_CTRL_CHAR 控制字符错误,可能编码不正确 |
5 |
JSON_ERROR_SYNTAX Syntax error |
6 |
JSON_ERROR_UTF8 错误格式的 UTF-8 字符,可能编码不正确 |
7 |
JSON_ERROR_RECURSION 要进行编码的值中存在一个或多个递归引用 |
8 |
JSON_ERROR_INF_OR_NAN 要进行编码的值中存在一个或多个 NAN 或 INF 值 |
9 |
*JSON_ERROR_UNSUPPORTED_TYPE*给出不能被编码的类型的值 |
10 |
JSON_ERROR_INVALID_PROPERTY_NAME 给出不能被编码的属性名 |
11 |
JSON_ERROR_UTF16 格式错误的 UTF-16 个字符,可能编码不正确 |
Example
以下 PHP 代码将给定的数组编码为 JSON 表示,并将 JSON 字符串解码回 PHP 数组。
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$encoded = json_encode($arr);
echo "The initial array: " . PHP_EOL;
var_dump($arr);
echo "Encoded JSON: $encoded" . PHP_EOL;
$decoded = json_decode($encoded);
echo "Array obtained after decoding: " . PHP_EOL;
var_dump($decoded);
?>
它将生成以下 output −
The initial array:
array(5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}
Encoded JSON: {"a":1,"b":2,"c":3,"d":4,"e":5}
Array obtained after decoding:
object(stdClass)#1 (5) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
["d"]=>
int(4)
["e"]=>
int(5)
}