1
0
mirror of https://github.com/php/doc-zh.git synced 2026-04-25 00:58:02 +02:00
Files
2025-09-21 23:55:20 +08:00

394 lines
11 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 40e4bf862f9c23ffe871a68baebf31f753d4293b Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<appendix xml:id="json.constants" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.constants;
&extension.constants;
<para>
以下常量表示了 <function>json_last_error</function> 函数,或
<classname>JsonException</classname> 类中的
<varname>code</varname> 变量所返回的错误类型。
</para>
<variablelist>
<varlistentry xml:id="constant.json-error-none">
<term>
<constant>JSON_ERROR_NONE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
没有错误发生。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-depth">
<term>
<constant>JSON_ERROR_DEPTH</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
到达了最大堆栈深度。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-state-mismatch">
<term>
<constant>JSON_ERROR_STATE_MISMATCH</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
出现了下溢(underflow)或者模式不匹配。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-ctrl-char">
<term>
<constant>JSON_ERROR_CTRL_CHAR</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
控制字符错误,可能是编码不对。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-syntax">
<term>
<constant>JSON_ERROR_SYNTAX</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
语法错误。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-utf8">
<term>
<constant>JSON_ERROR_UTF8</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
异常的 UTF-8 字符,也许是因为不正确的编码。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-recursion">
<term>
<constant>JSON_ERROR_RECURSION</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
传递给 <function>json_encode</function> 函数的对象或数组包含了递归引用,导致无法被编码。如果打开了
<constant>JSON_PARTIAL_OUTPUT_ON_ERROR</constant> 选项,则牵涉到递归引用的数据会转换成
&null; 后返回。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-inf-or-nan">
<term>
<constant>JSON_ERROR_INF_OR_NAN</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
传递给 <function>json_encode</function> 函数的参数中包含了
<link linkend="language.types.float.nan"><constant>NAN</constant></link>
<link linkend="function.is-infinite"><constant>INF</constant></link>,导致编码出错。如果打开了
<constant>JSON_PARTIAL_OUTPUT_ON_ERROR</constant> 选项,则牵涉到对应不可编码的数字,会转换成数字
<literal>0</literal> 后返回。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-unsupported-type">
<term>
<constant>JSON_ERROR_UNSUPPORTED_TYPE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
传递了不支持的数据类型给 <function>json_encode</function> 函数,比如 &resource;。如果打开了
<constant>JSON_PARTIAL_OUTPUT_ON_ERROR</constant> 选项,则对于不支持的数据类型,会转换成
&null; 后返回。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-invalid-property-name">
<term>
<constant>JSON_ERROR_INVALID_PROPERTY_NAME</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
当 JSON 对象解码为 PHP 对象时,传递给 <function>json_decode</function> 的字符串包含以 \u0000 字符开头的 key。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-utf16">
<term>
<constant>JSON_ERROR_UTF16</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
传递给 <function>json_encode</function> 的 JSON 字符串包含 Unicode 转义,其中含有单个未配对的 UTF-16 代理字符。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-error-non-backed-enum">
<term>
<constant>JSON_ERROR_NON_BACKED_ENUM</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
传递给 <function>json_encode</function> 的值包含了无法序列化的非支持的枚举。
自 PHP 8.1.0 起生效。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<para>
下面的常量可以和 <function>json_decode</function> 的 form 选项结合使用。
</para>
<variablelist>
<varlistentry xml:id="constant.json-bigint-as-string">
<term>
<constant>JSON_BIGINT_AS_STRING</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
将大数字编码成原始字符原来的值。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-object-as-array">
<term>
<constant>JSON_OBJECT_AS_ARRAY</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
将 JSON 对象作为数组解码。当调用 <function>json_decode</function> 且第二个参数为
&true; 时此选项会自动添加。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<para>
下面的常量可以和 <function>json_encode</function> 的 form 选项结合使用。
</para>
<variablelist>
<varlistentry xml:id="constant.json-hex-tag">
<term>
<constant>JSON_HEX_TAG</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
所有的 &lt;&gt; 转换成 \u003C 和 \u003E。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-hex-amp">
<term>
<constant>JSON_HEX_AMP</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
所有的 &amp; 转换成 \u0026。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-hex-apos">
<term>
<constant>JSON_HEX_APOS</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
所有的 ' 转换成 \u0027。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-hex-quot">
<term>
<constant>JSON_HEX_QUOT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
所有的 " 转换成 \u0022。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-force-object">
<term>
<constant>JSON_FORCE_OBJECT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
使一个非关联数组输出一个类(Object)而非数组。
在数组为空而接受者需要一个类(Object)的时候尤其有用。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-numeric-check">
<term>
<constant>JSON_NUMERIC_CHECK</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
将所有数字字符串编码成数字(numbers)。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-pretty-print">
<term>
<constant>JSON_PRETTY_PRINT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
用空白字符格式化返回的数据。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-unescaped-slashes">
<term>
<constant>JSON_UNESCAPED_SLASHES</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
不要编码 <literal>/</literal>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-unescaped-unicode">
<term>
<constant>JSON_UNESCAPED_UNICODE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-partial-output-on-error">
<term>
<constant>JSON_PARTIAL_OUTPUT_ON_ERROR</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
用不可编码的值来代替失败。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-preserve-zero-fraction">
<term>
<constant>JSON_PRESERVE_ZERO_FRACTION</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
确保 <type>float</type> 值始终编码为为 float 值。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-unescaped-line-terminators">
<term>
<constant>JSON_UNESCAPED_LINE_TERMINATORS</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
The line terminators are kept unescaped when
<constant>JSON_UNESCAPED_UNICODE</constant> is supplied. It uses the same
behaviour as it was before PHP 7.1 without this constant.
Available since PHP 7.1.0.
</simpara>
</listitem>
</varlistentry>
</variablelist>
<para>
下面的常量可以和 <function>json_decode</function><function>json_encode</function> 的 form 选项结合使用。
</para>
<variablelist>
<varlistentry xml:id="constant.json-invalid-utf8-ignore">
<term>
<constant>JSON_INVALID_UTF8_IGNORE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
忽略无效的 UTF-8 字符。自 PHP 7.2.0 起生效。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-invalid-utf8-substitute">
<term>
<constant>JSON_INVALID_UTF8_SUBSTITUTE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
将无效 UTF-8 字符转换为 \0xfffdUnicode 字符“虚缺号”)。自 PHP 7.2.0 起生效。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.json-throw-on-error">
<term>
<constant>JSON_THROW_ON_ERROR</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
如果发生错误则会抛出 <classname>JsonException</classname>,而不是通过 <function>json_last_error</function>
<function>json_last_error_msg</function> 检索设置到全局的错误状态。<constant>JSON_PARTIAL_OUTPUT_ON_ERROR</constant>
优先于 <constant>JSON_THROW_ON_ERROR</constant>。自 PHP 7.3.0 起生效。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->