Сжатие JSON (JSON Minification) — это процесс удаления всех ненужных пробельных символов (пробелов, символов переноса строки\n, табуляции\t, возврата каретки\r) и комментариев (нестандартных, но распространённых) из JSON-текста, преобразующий отформатированный JSON с многоуровневыми отступами в однострочный компактный формат. Сжатие JSON не изменяет никакие данные — имена ключей, значения, типы данных (строки/числа/булевы/null/массивы/объекты), вложенная структура полностью сохраняются, удаляются только форматирующие пробелы для чтения человеком.
Основная ценность сжатия JSON — уменьшение объёма данных. Отступы и переносы строк в отформатированном JSON дружелюбны для разработчиков, но являются избыточными байтами при сетевой передаче и хранении. Например, типичный API-ответ после форматирования может занимать 2 КБ, после сжатия — всего 1,2-1,5 КБ, объём уменьшается на 25%-40%. В сценариях высоконагруженных API, мобильных сетей с плохим соединением, массового распространения конфигурационных файлов сжатие JSON значительно снижает потребление пропускной способности, ускоряет передачу, уменьшает нагрузку на сервер. В продакшене обычно используется вместе с HTTP-сжатием Gzip/Brotli, но JSON Minify как сжатие на уровне контента остаётся незаменимым.
Реализация сжатия JSON очень проста: нужно распарсить текст в JavaScript-объект с помощью JSON.parse(), а затем сериализовать с помощью JSON.stringify(obj) без параметра отступов — именно так реализован основной механизм этого инструмента. Этот подход parse + stringify естественным образом гарантирует, что выходной JSON будет 100% валидным, а также автоматически удаляет недопустимые комментарии и лишние запятые (в сочетании с исправлением ошибок). Важно отметить: сжатие JSON и сжатие Gzip — это оптимизации на разных уровнях — JSON Minify удаляет избыточные пробелы на уровне контента, Gzip — это универсальный алгоритм сжатия на уровне передачи, их можно использовать вместе.