Как исправить некорректный 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 в коде или настройках.