Сжатие убирает все пробелы, табуляции и переносы вне строк: отформатированный файл на 120 КБ часто уменьшается примерно до 90 КБ. Перед этим JSON проверяется, а экономия в байтах показывается. Удобно для фикстур, localStorage и тел запросов.
Как пользоваться
- Вставьте JSON, перетащите или откройте файл .json. Проверка идёт по мере ввода.
- При ошибке вы увидите точную строку и столбец, указатель под проблемой и понятное объяснение. Нажмите на ошибку, чтобы перейти к ней.
- Вид «Формат»: выберите 2 пробела, 4 пробела, Tab или «Сжать» и при желании отсортируйте ключи. Скопируйте или скачайте результат.
- Дерево: разворачивайте и сворачивайте узлы. Нажмите на строку, чтобы скопировать её путь, например $.items[3].name.
- CSV: массив объектов превращается в таблицу, вложенные поля — в столбцы через точку. Скачайте для Excel или Google Таблиц.
- Ваш JSON не покидает браузер. Файлы размером 10 МБ и больше обрабатываются без проблем.
- Числа, которые JavaScript не может точно представить, при форматировании сохраняют все цифры, если браузер это поддерживает.
- Сортировка ключей рекурсивная — удобно перед сравнением двух JSON-файлов.
- CSV строится из первого найденного массива объектов. Массивы внутри объектов становятся нумерованными столбцами вроде tags.0 и tags.1. Файл содержит UTF-8 BOM, чтобы Excel правильно показывал кириллицу.
Каким должен быть корректный JSON
JSON описан в RFC 8259 и ECMA-404. Строки и ключи берутся в двойные кавычки, а типов значений всего шесть: объект, массив, строка, число, true/false и null. Комментарии, висячие запятые, одинарные кавычки, NaN, Infinity и ведущие нули вроде 007 запрещены, хотя JavaScript кое-что из этого принимает.
Типичные ошибки — запятая после последнего элемента, пропущенная запятая между элементами, неэкранированная кавычка или перевод строки внутри строки и ключ без кавычек. Валидатор называет проблему и отмечает место, например неожиданная } в строке 12, столбце 3 после висячей запятой.
Форматировать, сжать или отсортировать
Форматирование добавляет отступы и переносы, чтобы данные было удобно читать и сравнивать; сжатие убирает все необязательные пробелы и обычно уменьшает файл с отступами на 10–30 %. Рекурсивная сортировка ключей выстраивает объекты по алфавиту, поэтому два файла с одинаковыми данными, но разным порядком ключей сравниваются без лишних отличий. Очень большие целые числа, например 64-битные ID, при форматировании сохраняют точные цифры, если браузер это поддерживает.
Дерево и CSV
В режиме дерева можно сворачивать большие документы и копировать путь к любому узлу в стиле JSONPath, например $.items[3].name. Режим CSV берёт первый массив объектов, делает ключи заголовками столбцов и разворачивает вложенные поля в точечную запись вроде address.city — таблица сразу готова для Excel или Google Таблиц.
Частые вопросы
Как найти ошибку в JSON?
Вставьте его и посмотрите сообщение под редактором: там указаны строка, столбец и короткое пояснение, а нужный символ отмечен. Нажмите на сообщение, чтобы перейти к ошибке.
Можно ли в JSON писать комментарии и висячие запятые?
Нет. Стандартный JSON (RFC 8259) не допускает ни того, ни другого. Некоторые инструменты читают JSONC или JSON5, но API и JSON.parse их отвергнут, поэтому уберите их перед отправкой.
Мой JSON куда-нибудь загружается?
Нет. Разбор, форматирование и конвертация выполняются в браузере, так что можно вставлять ответы API и конфиги с конфиденциальными данными.
Чем форматирование отличается от сжатия?
Форматирование добавляет отступы и переносы строк для удобства чтения. Сжатие удаляет все пробелы вне строк, чтобы файл был как можно меньше. Сами данные не меняются.
Можно ли здесь перевести JSON в CSV?
Да. Переключитесь в режим CSV: массив объектов станет строками, ключи — столбцами, вложенные поля — столбцами в точечной записи. Скачанный файл корректно открывается в Excel.
Почему большие числа меняются в других инструментах?
Числа в JavaScript — это 64-битные числа с плавающей точкой, и целые больше 9 007 199 254 740 991 при чтении теряют точность. Этот форматер сохраняет исходные цифры, если браузер позволяет; такие ID лучше хранить строками.