Ошибки парсера при разборе JSON в PHP

С помощью функции json_last_error можно узнать, какая именно ошибка случилась при парсинге JSON. Давайте посмотрим, как это делается. Пусть у нас есть некорректный JSON:

php<?php
  $json = '["a", "b", "c",]';
?>

Давайте попробуем разобрать его:

php<?php
  $data = json_decode($json);
  var_dump($data); // выведет null
?>

Так как возникала ошибка, то json_last_error при вызове выдаст номер этой ошибки:

php<?php
  $error = json_last_error();
  var_dump($error); // номер ошибки
?>

Возвращаемый номер можно сравнивать со специальными константами PHP. На основе этого можно написать код, отлавливающий различные типы ошибок:

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;
  }
?>
Задание 1

Дана строка с некоторым JSON. Разберите его в структуру данных PHP. Выведите результат разбора или причину ошибки, если разобрать JSON не удалось.