Как исправить некорректный JSON

Сообщение вроде «Unexpected token» редко объясняет, что на самом деле не так. В этом руководстве собраны важные правила JSON, способ найти точное место ошибки и исправления ошибок, из-за которых JSON чаще всего оказывается некорректным.

Открыть инструмент: Форматирование JSON

Правила, на которых чаще всего ошибаются

  • Строки и ключи заключаются только в двойные кавычки: "name", а не 'name'.
  • Каждый ключ — строка в кавычках. {name: 1} — допустимый JavaScript, но не JSON.
  • После последнего элемента объекта или массива запятая не ставится.
  • Комментарии запрещены в любом виде.
  • Литеральные значения — только true, false и null, всегда строчными буквами.
  • У чисел не бывает ведущих нулей, знака плюс и шестнадцатеричной записи. NaN и Infinity недопустимы.

Как найти точное место ошибки

Парсер сообщает позицию, где он остановился, а она обычно находится сразу после настоящей ошибки. Если ошибка указывает на закрывающую скобку, посмотрите строку выше: чаще всего там висячая запятая или пропущенная кавычка.

Наш форматер показывает строку и столбец, приводит эту строку с отметкой под проблемой и даёт кнопку «Показать в поле ввода», которая выделяет нужный символ. Это особенно удобно на телефоне.

Ошибки из-за копирования

JSON, скопированный из текстового редактора, мессенджера или письма, часто содержит типографские кавычки (« » или “ ”) вместо прямых (") или невидимые неразрывные пробелы. Выглядит правильно, но это ошибка. «Исправить JSON» заменяет такие символы.

Данные из вывода Python содержат True, False и None и одинарные кавычки. Данные из кода JavaScript могут содержать ключи без кавычек и комментарии. «Исправить JSON» превращает всё это в стандартный JSON.

Если JSON обрезан

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

Проверьте результат

После правки строка состояния становится зелёной и показывает число ключей и уровней вложенности. Переключитесь на дерево, чтобы убедиться, что структура такая, как нужно, прежде чем использовать JSON в коде или настройках.