tigtools

Валидатор JSON

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

Работает в браузере Без регистрации

Результат появится здесь, как только вы вставите JSON.

Как пользоваться

  1. Вставьте JSON в поле, откройте файл или нажмите «Попробовать пример», чтобы увидеть отчёт об ошибке.
  2. Посмотрите результат: зелёное сообщение означает, что JSON корректен; в противном случае отображается первая ошибка, её строка и столбец, а также указатель на проблемное место.
  3. Исправьте ошибку согласно подсказке и проверьте снова. Результат обновляется по мере ввода.
  4. Если JSON корректен, изучите статистику: тип корневого значения, количество ключей, глубину вложенности и размер в байтах.

Как это работает

Валидатор проверяет синтаксис в соответствии со стандартом JSON (RFC 8259 / ECMA-404), используя встроенный парсер JSON браузера. Поэтому документ, прошедший проверку, также принимается методом JSON.parse в JavaScript и парсерами других языков, соответствующими стандарту. Если при разборе возникает ошибка, строгий анализатор, созданный для этого инструмента, за один проход находит первую ошибку и её точные координаты — номер строки и столбца, — а затем показывает эту строку с маркером ^ под проблемным местом.

Подсказки посвящены типичным ошибкам при написании JSON вручную или копировании из JavaScript: запятая после последнего элемента, строки в одинарных кавычках, ключи без кавычек, комментарии // или /* */, значения вроде NaN, Infinity или undefined, необработанные переносы строк внутри строк и два документа JSON, вставленные один за другим (как в файлах JSON Lines). Отображается только первая ошибка, поскольку одна ошибка часто затрудняет обнаружение всех последующих.

Инструмент проверяет только синтаксис. Он не выполняет проверку по JSON Schema и потому не может определить, отсутствует ли обязательное поле. Также он не предупреждает о повторяющихся ключах: стандарт их допускает, а большинство парсеров оставляют последнее значение. Статистика учитывает ключи во всех объектах на каждом уровне; глубина равна 1 для плоского объекта или массива и увеличивается на единицу с каждым уровнем вложенности.

Примеры

Конфигурация, скопированная из JavaScript

В записи {name: 'demo', debug: true,} ошибка обнаруживается в строке 1, столбце 2: «Ключи объектов нужно заключать в двойные кавычки». Если заключить ключ в кавычки, при следующей проверке будет указана строка в одинарных кавычках, а затем — лишняя запятая в конце.

Файл журнала с одним объектом в строке

Если вставить две строки, например {"id":1} и {"id":2}, появится сообщение «После конца значения JSON есть лишнее содержимое» для строки 2. Каждая строка по отдельности — корректный JSON (JSON Lines), но вместе их нужно заключить в [ ] и разделить запятой.

Проверка данных API

Ответ размером 2 МБ проверяется за секунду. Результат показывает: корневой тип — Array, 1 500 элементов верхнего уровня и глубина вложенности 4. Это быстрая проверка перед написанием кода для работы с ответом.

Часто задаваемые вопросы

Проверяет ли инструмент данные по JSON Schema?

Нет. Инструмент проверяет, соответствует ли текст синтаксису JSON. Для проверки обязательных полей, типов и форматов нужен валидатор JSON Schema, которого здесь нет.

Почему отображается только одна ошибка?

После первой синтаксической ошибки парсер не может определить, что имел в виду автор, поэтому последующие «ошибки» часто возникают из-за первой. Исправьте указанную проблему — если есть следующая ошибка, она сразу появится.

Бывают ли допустимы комментарии или завершающие запятые?

В JSON — нет. В форматах вроде JSON5 и JSONC (которые используют в файлах настроек некоторых редакторов) комментарии и завершающие запятые разрешены, но стандартные парсеры JSON их отклоняют, поэтому здесь они отмечаются как ошибки.

Является ли отдельное значение, например 42 или «hello», допустимым JSON?

Да. Начиная с RFC 7159 корневым значением JSON может быть любое значение, а не только объект или массив. Некоторые старые инструменты и API по-прежнему ожидают на верхнем уровне объект или массив.

Почему номер столбца может отличаться от номера в редакторе?

Столбцы считаются в кодовых единицах UTF-16, как JavaScript считает длину строки. Эмодзи и некоторые редкие символы занимают две единицы, а табуляция — одну, хотя редакторы могут отображать её шире.

Конфиденциальность

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