1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/json/functions/json-last-error.xml
2024-05-30 03:18:35 +03:00

259 lines
8.0 KiB
XML
Raw 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"?>
<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: mch Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.json-last-error" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>json_last_error</refname>
<refpurpose>Возвращает последнюю ошибку</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>json_last_error</methodname>
<void />
</methodsynopsis>
<para>
Функция возвращает последнюю ошибку (если она есть),
которая возникла во время последнего кодирования или декодирования JSON, если
при вызове не устанавливался флаг <constant>JSON_THROW_ON_ERROR</constant>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает целочисленное значение в виде следующих
констант:
</para>
<table>
<title>Коды ошибок JSON</title>
<tgroup cols="2">
<thead>
<row>
<entry>Константа</entry>
<entry>Значение</entry>
<entry>Доступность</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>JSON_ERROR_NONE</constant></entry>
<entry>Ошибок нет</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_DEPTH</constant></entry>
<entry>Достигнута максимальная глубина стека</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_STATE_MISMATCH</constant></entry>
<entry>Неверный или некорректный JSON</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_CTRL_CHAR</constant></entry>
<entry>Ошибка управляющего символа, возможно, неверная кодировка</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_SYNTAX</constant></entry>
<entry>Синтаксическая ошибка</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_UTF8</constant></entry>
<entry>Некорректные для кодировки UTF-8 символы, возможно, неверная кодировка</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_RECURSION</constant></entry>
<entry>Одна или несколько зацикленных ссылок в кодируемом значении</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_INF_OR_NAN</constant></entry>
<entry>
Одно или несколько значений
<link linkend="language.types.float.nan"><constant>NAN</constant></link>
или <link linkend="function.is-infinite"><constant>INF</constant></link>
в кодируемом значении
</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_UNSUPPORTED_TYPE</constant></entry>
<entry>Передали значение с неподдерживаемым типом</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_INVALID_PROPERTY_NAME</constant></entry>
<entry>Имя свойства не может быть закодировано</entry>
<entry></entry>
</row>
<row>
<entry><constant>JSON_ERROR_UTF16</constant></entry>
<entry>Некорректный для кодировки UTF-16 символ, возможно, некорректно закодирован</entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>json_last_error</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Верная json-строка
$json[] = '{"Organization": "PHP Documentation Team"}';
// Неверная json-строка, которая вызовет синтаксическую ошибку,
// здесь в качестве кавычек мы используем ' вместо "
$json[] = "{'Organization': 'PHP Documentation Team'}";
foreach ($json as $string) {
echo 'Декодируем: ' . $string;
json_decode($string);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - Ошибок нет';
break;
case JSON_ERROR_DEPTH:
echo ' - Достигнута максимальная глубина стека';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Некорректные разряды или несоответствие режимов';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Некорректный управляющий символ';
break;
case JSON_ERROR_SYNTAX:
echo ' - Синтаксическая ошибка, некорректный JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Некорректные символы UTF-8, возможно неверно закодирован';
break;
default:
echo ' - Неизвестная ошибка';
break;
}
echo PHP_EOL;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Декодируем: {"Organization": "PHP Documentation Team"} - Ошибок нет
Декодируем: {'Organization': 'PHP Documentation Team'} - Синтаксическая ошибка, некорректный JSON
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Совместное использование <function>json_last_error</function> и <function>json_encode</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Некорректная последовательность UTF8
$text = "\xB1\x31";
$json = json_encode($text);
$error = json_last_error();
var_dump($json, $error === JSON_ERROR_UTF8);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(4) "null"
bool(true)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>
Пример работы функции <function>json_last_error</function> и константы <constant>JSON_THROW_ON_ERROR</constant>
</title>
<programlisting role="php">
<![CDATA[
<?php
// Некорректная последовательность UTF8, которая вызывает ошибку JSON_ERROR_UTF8
json_encode("\xB1\x31");
// Не вызовет ошибки JSON
json_encode('okay', JSON_THROW_ON_ERROR);
// Функцией json_encode() не изменит глобальное состояние
var_dump(json_last_error() === JSON_ERROR_UTF8);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(true)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>json_last_error_msg</function></member>
<member><function>json_decode</function></member>
<member><function>json_encode</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->