Форматирование и валидация JSON: практическое руководство
Зачем форматировать JSON, распространённые ошибки и как бесплатно валидировать JSON прямо в браузере — без установки инструментов.
JSON — стандартный формат данных для веб-API. Он читаемый, лёгкий и нативно поддерживается в каждом современном языке. Но сырой JSON из ответа API или лог-файла — это обычно одна длинная минифицированная строка. Отлаживать структуру, которую невозможно разглядеть, — занятие малоприятное. Вот зачем нужно форматирование и как сделать это за секунды.
Зачем форматировать JSON?
Объект JSON размером 2 КБ в одну строку против правильно отступленной структуры — разница между отладкой за десять секунд и за десять минут. Ключи легко найти, уровни вложенности видны сразу, а пропущенная скобка бросается в глаза.
Когда API возвращает что-то неожиданное, форматированный JSON позволяет быстро просмотреть структуру и сразу увидеть проблемный ключ. А при написании тела запроса форматирование заранее покажет структурные ошибки — до лишнего обращения к серверу.
В код-ревью форматирование тоже важно. Форматированные JSON-конфиги и фикстуры API дают читаемые диффы. «Ключ timeout изменился с 30 на 60» очевидно в форматированном диффе и невидимо в минифицированном.
Распространённые ошибки JSON
Замыкающие запятые. Стандартный JSON не допускает запятую после последнего элемента в объекте или массиве. {"a": 1,} недопустим — форматировщик сразу это обнаружит.
Одинарные кавычки. JSON требует двойных кавычек для ключей и строковых значений. {'key': 'value'} — это синтаксис JavaScript-объекта, не JSON. Нужно {"key": "value"}.
Ключи без кавычек. В отличие от объектных литералов JavaScript, ключи JSON должны быть в кавычках. {key: "value"} не пройдёт.
Комментарии. JSON их не поддерживает. Если в вашем JSON есть // или /* */ — удалите их перед форматированием. Для конфигурационных файлов с комментариями лучше использовать JSONC.
Числа, записанные как строки. Если вместо 42 хранится "42", это приведёт к ошибкам типов. В форматированном JSON разница видна сразу: строки в кавычках, числа — нет.
Форматирование и минификация
Форматирование добавляет отступы и переносы строк. Используйте его при чтении, отладке или добавлении файлов в систему контроля версий.
Минификация убирает все пробелы. Нужна в продакшен-ответах API и при встраивании JSON в исходный код. Типичный ответ API после минификации становится на 30–40% меньше.
Как работает форматировщик
Форматировщик JSON запускает JSON.parse() для валидации и разбора входных данных, затем JSON.stringify(parsed, null, 2) для повторной сериализации с отступами в 2 пробела. Всё работает в браузере — никакой загрузки на сервер, никакого хранения данных.
Валидация в реальном времени: ошибка видна по мере ввода. Строка статуса показывает точную позицию первой синтаксической ошибки, чтобы исправить её без запуска кода.
Когда браузер не справляется
Для JSON-файлов больше 10 МБ браузерный форматировщик может тормозить. Альтернативы:
python -m json.tool file.json— встроено в Python, быстро справляется с большими файламиjq . file.json— стандарт для JSON в командной строке; файлы в гигабайт не вызывают проблем- VS Code с Prettier — удобен для крупных файлов и поддерживает JSONC
Попробуйте Форматировщик и валидатор JSON — вставьте JSON и отформатируйте или проверьте его одним кликом, бесплатно и конфиденциально.