Error неверная строка json

json_last_error — Возвращает последнюю ошибку (PHP 5 >= 5.3.0, PHP 7) json_last_error — Возвращает последнюю ошибку Описание Если при последнем JSON кодировании/декодировании возникла ошибка, то возвращает её код. Список параметров У этой функции нет параметров. Возвращаемые значения Возвращает целочисленное значение, которое может быть одной из следующих констант: Коды ошибок JSON Константа Значение Доступность JSON_ERROR_NONE […]

Содержание

  1. json_last_error — Возвращает последнюю ошибку
  2. Описание
  3. Список параметров
  4. Возвращаемые значения
  5. Примеры
  6. Смотрите также
  7. json_last_error
  8. Описание
  9. Список параметров
  10. Возвращаемые значения
  11. Примеры
  12. Смотрите также
  13. Как автоматически исправить недопустимую строку JSON?
  14. 5 ответов
  15. json_last_error
  16. Описание
  17. Список параметров
  18. Возвращаемые значения
  19. Примеры
  20. Смотрите также
  21. json_last_error
  22. Описание
  23. Список параметров
  24. Возвращаемые значения
  25. Примеры
  26. Смотрите также

json_last_error — Возвращает последнюю ошибку

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — Возвращает последнюю ошибку

Описание

Если при последнем JSON кодировании/декодировании возникла ошибка, то возвращает её код.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или не корректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последователньость UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Returns the error string of the last json_encode() or json_decode() call
  • json_decode() — Декодирует JSON строку
  • json_encode() — Возвращает JSON-представление данных

Источник

json_last_error

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

json_last_error — Возвращает последнюю ошибку

Описание

Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или некорректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом
JSON_ERROR_INVALID_PROPERTY_NAME Имя свойства не может быть закодировано
JSON_ERROR_UTF16 Некорректный символ UTF-16, возможно некорректно закодирован

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последовательность UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Пример #3 json_last_error() и JSON_THROW_ON_ERROR

// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );

// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );

// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
  • json_decode() — Декодирует строку JSON
  • json_encode() — Возвращает JSON-представление данных

Источник

Как автоматически исправить недопустимую строку JSON?

из API 2gis я получил следующую строку JSON.

но Python не распознает его:

ожидание, разделитель: строка 1 столбец 3646 (char 3645)

похоже, что проблема с кавычками в: «название»: «Центр » аванс»»

Как я могу исправить это автоматически в Python?

5 ответов

The ответ @Michael подал мне идею. не очень красивая идея, но она, похоже, работает, по крайней мере, на вашем примере: попробуйте разобрать строку JSON, и если это не удастся, найдите символ, где он не удался в строке исключения 1 и замените этот символ.

вы можете добавить некоторые дополнительные проверки, чтобы предотвратить это от окончания бесконечного цикла (например, при максимальном количестве повторений, сколько символов в строке). кроме того, это все равно не сработает, если неверный » фактически следует запятая, как указано @gnibbler.

обновление: это, кажется, работает довольно Ну теперь (хотя все еще не идеально), даже если unescaped следует запятая или закрывающая скобка, так как в этом случае она, вероятно, получит жалобу на синтаксическую ошибку после этого (ожидаемое имя свойства и т. д.) и проследить до последнего » . Это также автоматически избегает соответствующего закрытия » (если есть).

1) исключения str is «Expecting , delimiter: line XXX column YYY (char ZZZ)» , где ZZZ-позиция в строке, где произошла ошибка. Обратите внимание, что это сообщение может зависеть от версии Python, json module, OS или locale, и, следовательно, это решение может быть адаптировано соответствующим образом.

если это именно то, что API возвращает, то есть проблема с их API. Это недопустимый JSON. Особенно вокруг этой области:

двойные кавычки вокруг ADVANCE не экранируются. Вы можете сказать, используя что-то вродеhttp://jsonlint.com/ для проверки.

это проблема с » не будучи экранированным, данные плохи в источнике, если это то, что вы получаете. Они должны исправить он.

это решает проблему:

единственным реальным и окончательным решением является 2GIS для исправления их API.

тем временем можно исправить плохо закодированный JSON, экранирующий двойные кавычки внутри строк. Если за каждой парой ключ-значение следует новая строка (как это кажется из разнесенных данных), следующая функция будет выполнять эту работу:

Пожалуйста, обратите внимание, что некоторые assumtions составила:

функция пытается избежать символов двойных кавычек внутри значение строка принадлежность к парам ключ-значение.

предполагается, что экранируемый текст начинается после последовательности

и заканчивается перед последовательностью

передача разнесенного JSON в функцию приводит к возвращаемому значению

имейте в виду, вы можете легко настроить функцию, если ваши потребности не полностью удовлетворены.

вам нужно избежать двойных кавычек в строках JSON следующим образом:

чтобы исправить это программно, самым простым способом было бы изменить ваш парсер JSON, чтобы у вас был некоторый контекст для ошибки, а затем попытаться восстановить его.

вышеуказанная идея хороша, но у меня были проблемы с этим. Мой JSON Sting состоял только из одной дополнительной двойной цитаты. Итак, я исправил приведенный выше код.

исправление выглядит следующим образом:

этот код также работает для строки JSON, упомянутой в постановке задачи

Источник

json_last_error

json_last_error — Возвращает последнюю ошибку

Описание

Если при последнем JSON кодировании/декодировании возникла ошибка, то возвращает её код.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или не корректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3

Примеры

Пример #1 Пример использования json_last_error()

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

Результат выполнения данного примера:

Смотрите также

  • json_decode() — Декодирует JSON строку
  • json_encode() — Возвращает JSON-представление данных

Источник

json_last_error

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — Возвращает последнюю ошибку

Описание

Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или некорректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME Имя свойства не может быть закодировано PHP 7.0.0
JSON_ERROR_UTF16 Некорректный символ UTF-16, возможно некорректно закодирован PHP 7.0.0

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последовательность UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Пример #3 json_last_error() и JSON_THROW_ON_ERROR

// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );

// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );

// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
  • json_decode() — Декодирует строку JSON
  • json_encode() — Возвращает JSON-представление данных

Источник

json_last_error

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

json_last_error — Возвращает последнюю ошибку

Описание

Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или некорректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом
JSON_ERROR_INVALID_PROPERTY_NAME Имя свойства не может быть закодировано
JSON_ERROR_UTF16 Некорректный символ UTF-16, возможно некорректно закодирован

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последовательность UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Пример #3 json_last_error() и JSON_THROW_ON_ERROR

// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );

// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );

// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
  • json_decode() — Декодирует строку JSON
  • json_encode() — Возвращает JSON-представление данных

Источник

Как автоматически исправить недопустимую строку JSON?

из API 2gis я получил следующую строку JSON.

но Python не распознает его:

ожидание, разделитель: строка 1 столбец 3646 (char 3645)

похоже, что проблема с кавычками в: «название»: «Центр » аванс»»

Как я могу исправить это автоматически в Python?

5 ответов

The ответ @Michael подал мне идею. не очень красивая идея, но она, похоже, работает, по крайней мере, на вашем примере: попробуйте разобрать строку JSON, и если это не удастся, найдите символ, где он не удался в строке исключения 1 и замените этот символ.

вы можете добавить некоторые дополнительные проверки, чтобы предотвратить это от окончания бесконечного цикла (например, при максимальном количестве повторений, сколько символов в строке). кроме того, это все равно не сработает, если неверный » фактически следует запятая, как указано @gnibbler.

обновление: это, кажется, работает довольно Ну теперь (хотя все еще не идеально), даже если unescaped следует запятая или закрывающая скобка, так как в этом случае она, вероятно, получит жалобу на синтаксическую ошибку после этого (ожидаемое имя свойства и т. д.) и проследить до последнего » . Это также автоматически избегает соответствующего закрытия » (если есть).

1) исключения str is «Expecting , delimiter: line XXX column YYY (char ZZZ)» , где ZZZ-позиция в строке, где произошла ошибка. Обратите внимание, что это сообщение может зависеть от версии Python, json module, OS или locale, и, следовательно, это решение может быть адаптировано соответствующим образом.

если это именно то, что API возвращает, то есть проблема с их API. Это недопустимый JSON. Особенно вокруг этой области:

двойные кавычки вокруг ADVANCE не экранируются. Вы можете сказать, используя что-то вродеhttp://jsonlint.com/ для проверки.

это проблема с » не будучи экранированным, данные плохи в источнике, если это то, что вы получаете. Они должны исправить он.

это решает проблему:

единственным реальным и окончательным решением является 2GIS для исправления их API.

тем временем можно исправить плохо закодированный JSON, экранирующий двойные кавычки внутри строк. Если за каждой парой ключ-значение следует новая строка (как это кажется из разнесенных данных), следующая функция будет выполнять эту работу:

Пожалуйста, обратите внимание, что некоторые assumtions составила:

функция пытается избежать символов двойных кавычек внутри значение строка принадлежность к парам ключ-значение.

предполагается, что экранируемый текст начинается после последовательности

и заканчивается перед последовательностью

передача разнесенного JSON в функцию приводит к возвращаемому значению

имейте в виду, вы можете легко настроить функцию, если ваши потребности не полностью удовлетворены.

вам нужно избежать двойных кавычек в строках JSON следующим образом:

чтобы исправить это программно, самым простым способом было бы изменить ваш парсер JSON, чтобы у вас был некоторый контекст для ошибки, а затем попытаться восстановить его.

вышеуказанная идея хороша, но у меня были проблемы с этим. Мой JSON Sting состоял только из одной дополнительной двойной цитаты. Итак, я исправил приведенный выше код.

исправление выглядит следующим образом:

этот код также работает для строки JSON, упомянутой в постановке задачи

Источник

json_last_error — Возвращает последнюю ошибку

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — Возвращает последнюю ошибку

Описание

Если при последнем JSON кодировании/декодировании возникла ошибка, то возвращает её код.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или не корректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последователньость UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Returns the error string of the last json_encode() or json_decode() call
  • json_decode() — Декодирует JSON строку
  • json_encode() — Возвращает JSON-представление данных

Источник

json_last_error

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — Возвращает последнюю ошибку

Описание

Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или некорректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME Имя свойства не может быть закодировано PHP 7.0.0
JSON_ERROR_UTF16 Некорректный символ UTF-16, возможно некорректно закодирован PHP 7.0.0

Примеры

Пример #1 Пример использования json_last_error()

// Неверная 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;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последовательность UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Пример #3 json_last_error() и JSON_THROW_ON_ERROR

// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );

// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );

// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
  • json_decode() — Декодирует строку JSON
  • json_encode() — Возвращает JSON-представление данных

Источник

За последние 24 часа нас посетили 11505 программистов и 1163 робота. Сейчас ищут 242 программиста …

json_last_error

(PHP 5 >= 5.3.0, PHP 7)

json_last_errorВозвращает последнюю ошибку

Описание

int json_last_error
( void
)

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих
констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет  
JSON_ERROR_DEPTH Достигнута максимальная глубина стека  
JSON_ERROR_STATE_MISMATCH Неверный или не корректный JSON  
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка  
JSON_ERROR_SYNTAX Синтаксическая ошибка  
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений
NAN
или INF
в кодируемом значении
PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0

Примеры

Пример #1 Пример использования json_last_error()


<?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;
}
?>

Результат выполнения данного примера:

Декодируем: {"Organization": "PHP Documentation Team"} - Ошибок нет
Декодируем: {'Organization': 'PHP Documentation Team'} - Синтаксическая ошибка, некорректный JSON

Пример #2 Совместное использование json_last_error() и json_encode()


<?php
// Некорректная последователньость UTF8
$text "xB1x31";$json  json_encode($text);
$error json_last_error();var_dump($json$error === JSON_ERROR_UTF8);
?>

Результат выполнения данного примера:

string(4) "null"
bool(true)

Смотрите также

  • json_last_error_msg() — Returns the error string of the last json_encode() or json_decode() call
  • json_decode() — Декодирует JSON строку
  • json_encode() — Возвращает JSON-представление данных

Вернуться к: JSON Функции

Понравилась статья? Поделить с друзьями:
  • Error не удалось завершить действие ошибка 80020101 error
  • Error не удалось выполнить инициализацию steam pubg
  • Error надпись символами
  • Error на принтере что это
  • Error на принтере brother как исправить