Работа с JSON-текстом обычно сводится к трём разным задачам: сделать его читаемым, сделать его компактным или проверить, что он вообще корректен. Это три отдельные операции, хотя их часто объединяют в одном инструменте.
Форматирование (pretty-print)
Форматирование добавляет отступы, переносы строк и пробелы вокруг разделителей, чтобы структуру JSON было легко читать глазом. Это чисто косметическое изменение — оно не влияет на данные, только на визуальное представление.
Минимизация (minify)
Минимизация убирает все лишние пробелы, переносы строк и отступы, оставляя только необходимые символы. Это уменьшает размер файла, что важно при передаче по сети или хранении больших объёмов данных — сама структура данных при этом не меняется.
Валидация
Валидация проверяет, является ли текст синтаксически корректным JSON. Типичные ошибки, которые она ловит: лишняя запятая перед закрывающей скобкой, одинарные кавычки вместо двойных, незакавыченные ключи объекта, комментарии (которых в стандарте JSON нет) или незакрытые скобки. Валидный JSON — необходимое условие для того, чтобы форматирование или минимизация вообще сработали.
Когда что нужно
- Форматирование — при отладке ответов API или ручном редактировании конфигов.
- Минимизация — перед отправкой данных по сети или встраиванием в продакшн-код.
- Валидация — при диагностике, почему парсер отказывается читать JSON-файл.
Почему кириллица превращается в \u-последовательности
Многие сериализаторы по умолчанию экранируют все символы за пределами ASCII: строка "Привет" на выходе json.dumps() в Python без флага ensure_ascii=False превратится в "Привет". Это не повреждение данных — валидный JSON и до, и после экранирования, — но такой вывод невозможно прочитать глазом при отладке ответа API «Госуслуг», Bitrix-компонента или банковского бэкенда, где поля вроде ФИО или адреса приходят именно в кириллице. Форматтер, который красиво расставляет отступы, но не разворачивает \u-последовательности обратно в буквы, решает только половину задачи читаемости.
JSON5 и JSONC — это не тот же самый JSON
Конфиги VS Code или TypeScript допускают трейлинг-запятые, комментарии и незакавыченные ключи — это расширения JSON5/JSONC, а не стандартный JSON (RFC 8259). Валидатор, настроенный на строгий JSON, корректно отклонит такой файл, хотя редактор его «понимает». Если нужна поддержка комментариев, стоит явно обозначить формат как JSONC, а не надеяться, что любой JSON-парсер его примет.