Что убирается, а что убрать нельзя
Минификация JSON удаляет символы между токенами: отступы, переносы строк и пробел после двоеточия или запятой. Это весь список. Порядок ключей, точность чисел и содержимое строк не трогаются, потому что это данные, а не оформление.
Больше сжимать нечего. В JSON нет комментариев, которые можно вырезать, и нет более короткого синтаксиса — в отличие от JavaScript, где минификатор ещё и переименовывает переменные и переписывает выражения.
Где это реально имеет значение
Большая часть JSON едет по HTTP с gzip или brotli, а сжатие и так хорошо справляется с повторяющимися пробелами. Минификация остаётся полезной там, где сжатия не происходит:
- JSON внутри инлайнового тега
<script> data--атрибут с блоком конфигурации- Значение, попадающее в URL, куку или QR-код, где есть жёсткий лимит длины
- Всё, что кладётся в
localStorage, — там есть ограничение на origin
Обратный путь
Минифицированный и отформатированный JSON — один и тот же документ. Ничто не мешает отформатировать результат позже: операция не теряет информацию, и держать неминифицированную копию «на всякий случай» незачем.
Вопросы
Минификация меняет данные?+
Нет. Документ разбирается в настоящие значения и печатается обратно без форматирования, поэтому на выходе — то же самое как данные: те же ключи, те же числа, та же вложенность. Исчезают только пробелы.
Насколько меньше становится?+
Обычно на 15–30% для отформатированного JSON и больше для глубоко вложенных документов, где каждый уровень добавляет отступы. Строка состояния показывает точную цифру для ваших данных, а не обещание.
Нужно ли минифицировать JSON в ответе API?+
Это и так поведение по умолчанию во всех серьёзных фреймворках, а gzip убирает почти всю оставшуюся разницу. Минификация важнее там, где сжатия нет: инлайновый тег script, data-атрибут, параметр URL, содержимое QR-кода.
Можно вернуть форматирование?+
Да, ничего не потеряно. Прогоните результат через [форматтер JSON](/ru/t/json-formatter) и выберите отступ.