Отформатировать и проверить JSON
Расставьте отступы, минифицируйте или только проверьте JSON-файл. Ошибки укажем по строке и столбцу, скрытые проблемы назовем прямо.
Перетащите файлы сюда
.json, .jsonc, .txt · до 100 МБ
Как форматировать JSON
- 1
Перетащите JSON-файл
Добавьте один файл или до двадцати, до 100 МБ каждый. Файлы с комментариями и хвостовыми запятыми тоже принимаются.
- 2
Выберите форматирование, минификацию или проверку
Форматирование наводит порядок с отступами, минификация убирает каждый необязательный байт, а проверка только сообщает о найденном и не создает файл.
- 3
Посмотрите отчет и скачайте
Ошибки идут с указанием строки и столбца, предупреждения показывают дубли ключей и потери точности. Сохраните результат, когда он выглядит как нужно.
Ошибки с точной позицией, а не общие слова
Браузеры по-разному сообщают об ошибках разбора: одни выдают смещение в символах, другие только общее описание, а формулировки меняются от версии к версии. Поэтому JSON здесь читает парсер, написанный специально для этого инструмента. Он всегда превращает сбой в строку и столбец. В выгрузке на 40 000 объектов знать, что лишняя запятая стоит в строке 8 421, — это разница между двухминутной правкой и потерянным днем.
Дубликаты ключей и числа, которые меняются незаметно
Две проблемы не заметны при обычном разборе. Повторяющийся ключ в одном и том же объекте формально допустим для большинства парсеров: они оставляют последнее значение и ничего не говорят. Здесь вы видите обе строки. И целое число длиннее 2^53, например 9007199254740993, нельзя сохранить точно как JSON-число — оно возвращается на единицу меньше. Идентификаторы из внешних API постоянно попадают под это ограничение, поэтому каждый такой литерал отмечается вместе с путем к нему.
Мягкий ввод, строгий вывод
Реальные файлы часто приходят с комментариями //, блочными /* комментариями */ и хвостовой запятой после последнего элемента. Все это легко читается человеком, но отвергается любым стандартным парсером. В щадящем режиме такой ввод принимается: инструмент сообщает, что именно убрал. На выходе всегда получается обычный, валидный JSON. Переключитесь на строгий ввод, если нужно доказать, что файл уже полностью соответствует стандарту.
Данные остаются в этой вкладке
В дампах API и экспортированных конфигах обычно есть токены, адреса и данные клиентов, поэтому ничего никуда не отправляется. Файл читается, разбирается, проверяется и записывается заново прямо в вашем браузере, а крупные файлы обрабатываются в отдельном потоке. Никакой загрузки на сервер, никакого аккаунта и никаких копий после закрытия вкладки.
Частые вопросы
Почему мой JSON с комментариями все равно проходит проверку?
Потому что режим ввода по умолчанию — щадящий. Комментарии // и /* */ и хвостовые запятые принимаются, отмечаются как предупреждения и не попадают в вывод. Для конфигов, которые правят вручную, это удобно. Если нужно доказать, что файл — строгий JSON по стандарту, переключите ввод в строгий режим, и те же конструкции станут ошибками.
Что значит ошибка unexpected token?
Парсер встретил символ, который нельзя использовать на этом месте. Обычно это пропущенная или лишняя запятая, одинарная кавычка вместо двойной, неэкранированный ключ или значение, которое закончилось слишком рано. В сообщении указаны строка и столбец, так что начните читать на токен-два раньше этой позиции.
Как убрать все отступы?
Выберите минификацию. Каждый необязательный пробел, таб и перевод строки будет удален, и весь JSON окажется в одной строке, обычно на 15–30 процентов короче отформатированного варианта. Разобранные данные будут идентичны, поэтому минифицированный файл полностью заменяет красиво отформатированный.
Что такое потеря точности числа?
Числа в JSON — с плавающей точкой, поэтому не все целые выше 2^53 можно представить точно. Если подать 9007199254740993, вернется 9007199254740992. Чаще всего страдают длинные идентификаторы из внешних систем. Каждый литерал с этой проблемой помечается вместе с путем к нему, а надежное решение — чтобы API отдавал такие ID строками.
Можно ли отсортировать ключи по алфавиту?
Да, сортировка включается отдельным переключателем и действует на каждом уровне вложенности. Это особенно полезно перед сравнением двух выгрузок: порядок ключей становится одинаковым, и в diff остаются только реальные изменения. Порядок ключей в JSON значения не несет, так что при сортировке ничего не теряется.
Чем режим проверки отличается от обычного?
Он останавливается после проверки. Вы получаете вердикт и полный список ошибок и предупреждений, но файл для скачивания не создается. Используйте его, когда нужно только убедиться, что файл исправен, например артефакт сборки или ответ API перед релизом, и переписывать его вы не собираетесь.
Мой JSON куда-нибудь загружается?
Нет. Разбор, проверка и перезапись проходят во вкладке браузера с помощью кода, который загружается вместе со страницей. Нет сервера, который получает текст, ничего не логируется, и после закрытия вкладки ничего не остается.