Ошибки парсера при разборе 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 не удалось.