bitlvl
RU

Форматирование и проверка JSON

Вставьте JSON. Он проверяется по мере ввода, с указанием строки и колонки первой ошибки и её вероятной причины. Затем отформатируйте, минифицируйте, отсортируйте или сконвертируйте его.

Результаты и сообщения этого инструмента выводятся на английском языке.

Из-за чего JSON становится невалидным

JSON строже JavaScript, и ошибки почти всегда сводятся к нескольким случаям:

ОшибкаПочемуИсправление
{"a": 1,}Висячая запятаяУберите запятую перед } или ].
{'a': 1}Одинарные кавычкиСтроки и ключи используют только двойные кавычки.
{a: 1}Ключ без кавычекВозьмите его в кавычки: "a".
// commentВ JSON нет комментариевУдалите их или используйте JSON5 / JSONC там, где потребитель это поддерживает (настройки VS Code, tsconfig).
0123, .5, NaN, InfinityНедопустимые числаБез ведущих нулей, цифра перед точкой, без NaN/Infinity.
"line\nbreak"Буквальный перевод строки внутри строкиЭкранируйте его как \n.
undefinedНе является значением JSONИспользуйте null.

Мягкий режим удаляет комментарии и висячие запятые и заменяет одинарные кавычки перед разбором — это удобно для конфигурационных файлов, написанных вручную. Результат всегда строгий JSON.

YAML

YAML по духу является надмножеством JSON (любой JSON-документ — валидный YAML), но он гораздо шире: структуру задают отступы, строки обычно без кавычек, а некоторые голые слова имеют неожиданные значения. yes, no, on и off становятся булевыми в парсерах YAML 1.1, 022 может стать восьмеричным 18, а 3.10 превращается в 3.1. Конвертер берёт такие значения в кавычки при выводе YAML, чтобы они переживали обратное преобразование. Направление YAML → JSON поддерживает распространённое блочное подмножество: отображения, списки, скаляры, строки в кавычках, flow-коллекции и блоки | / >.

Большие документы

Всё выполняется в вашем браузере, так что несколько мегабайт — не проблема. Статистика дерева (глубина, количество объектов и массивов) помогает заметить неожиданно вложенные данные до того, как вы загрузите их во что-то, что на них захлебнётся.

Вопросы

Почему мой JSON невалиден, хотя он работает в JavaScript?

Объектные литералы JavaScript допускают ключи без кавычек, одинарные кавычки, висячие запятые, комментарии и hex-числа. JSON не допускает ничего из этого. Включите мягкий режим, чтобы увидеть, какой будет строгая форма.

Как найти ошибку на строке 2000 большого файла?

Валидатор сообщает строку и колонку и показывает текст вокруг ошибки. Большинство редакторов переходят к строке по Ctrl-G.

Меняет ли форматирование данные?

Нет. Форматирование и минификация меняют только пробельные символы. Сортировка ключей меняет порядок, который JSON не считает значимым, но некоторые потребители (подписи, канонический JSON) — считают.

Почему число потеряло точность?

Числа в JavaScript — это double, поэтому целые больше 2⁵³ (около 9 × 10¹⁵) округляются при разборе. Если вы форматируете документ с такими идентификаторами, храните их как строки.