PHP JavaScript 对象表示法函数
JSON 中的预定义常量
下列常量由该扩展定义,只有在扩展已经编译进 PHP 或在运行时动态加载的情况下才可用。
以下常量指示了由 json_last_error() 函数返回的错误类型。
- JSON_ERROR_NONE (整数) − 没有发生错误。
- JSON_ERROR_DEPTH (整数) − 超过了最大堆栈深度
- JSON_ERROR_STATE_MISMATCH (整数) − 在下溢或模式不匹配的情况下发生
- JSON_ERROR_CTRL_CHAR (整数) − 控制字符错误,可能是被错误编码
- JSON_ERROR_SYNTAX (整数) − 语法错误
- JSON_ERROR_UTF8 (整数) − 错误的 UTF-8 字符,可能是被错误编码
- JSON_ERROR_RECURSION (整数) − 传递给 json_encode() 函数的对象或数组包含递归引用,无法进行编码。如果给定了 JSON_PARTIAL_OUTPUT_ON_ERROR 选项,将在递归引用的位置编码为 NULL
- JSON_ERROR_INF_OR_NAN (整数) − 传递给 json_encode() 的值中包含 NaN 或 INF。如果给定了 JSON_PARTIAL_OUTPUT_ON_ERROR 选项,将在这些特殊数字的位置编码为 0
- JSON_ERROR_UNSUPPORTED_TYPE (整数) − 给 json_encode() 的值是不支持的类型,例如资源。如果给定了 JSON_PARTIAL_OUTPUT_ON_ERROR 选项,将在不支持的值的位置编码为 NULL
- JSON_ERROR_INVALID_PROPERTY_NAME (整数) − 字符串中传递给 json_decode() 解码 JSON 对象为 PHP 对象时,以\u0000字符开头的键名
- JSON_ERROR_UTF16 (整数) − 在传递给 json_encode() 的 JSON 字符串中,包含了单个不成对的 UTF-16 代理项转义字符
以下常量可以组合成 json_decode() 函数的选项。
- JSON_BIGINT_AS_STRING (整数) − 将大整数解码为它们原始的字符串值
- JSON_OBJECT_AS_ARRAY (整数) − 将 JSON 对象解码为 PHP 数组。可以通过将 json_decode() 的第二个参数设置为 TRUE 来自动添加此选项
以下常量可以组合成 json_encode() 函数的选项。
- JSON_HEX_TAG (integer) − 将所有的 < 和 > 转换为 \u003C 和 \u003E
- JSON_HEX_AMP (integer) − 将所有的 & 转换为 \u0026
- JSON_HEX_APOS (integer) − 将所有的 ‘ 转换为 \u0027
- JSON_HEX_QUOT (integer) − 将所有的 ” 转换为 \u0022
- JSON_FORCE_OBJECT (integer) − 当使用非关联数组时,输出一个对象而不是一个数组。当输出的接收者期望一个对象而数组为空时,特别有用
- JSON_NUMERIC_CHECK (integer) − 将数值字符串编码为数字
- JSON_PRETTY_PRINT (integer) − 使用空格在返回的数据中进行格式化
- JSON_UNESCAPED_SLASHES (integer) − 不转义 /
- JSON_UNESCAPED_UNICODE (integer) − 将多字节Unicode字符以文字形式编码(默认情况下转义为 \uXXXX)
- JSON_PARTIAL_OUTPUT_ON_ERROR (integer) − 在无法编码的值上进行替换,而不是失败
- JSON_PRESERVE_ZERO_FRACTION (integer) − 确保浮点数始终被编码为浮点数值
- JSON_UNESCAPED_LINE_TERMINATORS (integer) − 当提供 JSON_UNESCAPED_UNICODE 时,保留行终止符的未转义行为。与 PHP 7.1 之前的行为相同,没有这个常量
序号 | 方法和描述 |
---|---|
1 | json_decode() 函数可以解码JSON字符串。 |
2 | json_encode() 函数可以返回值的JSON表示形式。 |
3 | json_last_error() 函数可以返回最后发生的错误。 |
4 | json_last_error_msg() 函数可以返回最后一个json_encode()或json_decode()调用的错误字符串。 |
5 | sonserializable_interface() 实现JsonSerializable接口的对象可以在使用json_encode()函数进行编码时自定义它们的JSON表示方式。 |
6 | JsonSerializable_jsonSerialize() JsonSerializable::jsonSerialize() 可以指定可以序列化为JSON的数据。 |