Ошибки парсера при разборе JSON в PHP
С помощью функции json_last_error
можно узнать, какая именно ошибка
случилась при парсинге JSON.
Давайте посмотрим, как это
делается. Пусть у нас есть
некорректный JSON:
<?php
$json = '["a", "b", "c",]';
?>
Давайте попробуем разобрать его:
<?php
$data = json_decode($json);
var_dump($data); // выведет null
?>
Так как возникала ошибка, то json_last_error
при вызове выдаст номер этой ошибки:
<?php
$error = json_last_error();
var_dump($error); // номер ошибки
?>
Возвращаемый номер можно сравнивать со специальными константами PHP. На основе этого можно написать код, отлавливающий различные типы ошибок:
<?php
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;
}
?>
Дана строка с некоторым JSON. Разберите его в структуру данных PHP. Выведите результат разбора или причину ошибки, если разобрать JSON не удалось.