logo
GeekFormat

JSON Compress

Бесплатный онлайн-инструмент для сжатия JSON, поддерживает компактное однострочное сжатие JSON, JSON Escape/Unescape, встроенное интеллектуальное исправление синтаксиса для автоматической обработки распространённых ошибок вроде лишних запятых, отображение коэффициента сжатия в реальном времени, редактор CodeMirror с горячими клавишами, чисто клиентская обработка.

Похожие

Варианты использования

  • Сжатие тел JSON-запросов/ответов при разработке API для уменьшения количества передаваемых по HTTP байт и повышения скорости отклика (особенно в мобильных сетях с плохим соединением)
  • Оптимизация фронтенд JSON-конфигураций, i18n языковых пакетов, Mock-данных перед релизом для сокращения объёма статических ресурсов
  • Экранирование JSON-объектов в строковые литералы для встраивания в код юнит-тестов, команды Postman/curl
  • Однонажатийное Unescape экранированного JSON (например \"key\":\"value\") из логов в читаемый JSON
  • Пакетное исправление JSON-файлов с синтаксическими ошибками (лишние запятые, одинарные кавычки), одно нажатие — валидный JSON
  • Сжатие отформатированного JSON в одну строку для вставки в параметры однострочных команд или обмена в чатах

Функции

  • Три функции в одной: компактное сжатие JSON + Escape + Unescape, покрывают три сценария: уменьшение размера, встраивание в строки кода, восстановление экранирования
  • Интеллектуальное исправление синтаксиса: встроенный движок tryFixJSON автоматически обнаруживает и исправляет распространённые ошибки JSON — лишние запятые, одинарные кавычки, комментарии, незакрытые кавычки и т.д.
  • Редактор CodeMirror: двухколоночный макет (ввод слева, результат справа), подсветка синтаксиса JSON, перетаскиваемый разделитель, регулировка размера шрифта
  • Статистика сжатия в реальном времени: в строке состояния мгновенно отображаются исходный размер (Bytes/KB/MB), размер после сжатия, точный процент коэффициента сжатия
  • Горячие клавиши: Shift+Cmd/Ctrl+C — сжать, E — Escape, U — Unescape, O — загрузить, D — скачать, K — очистить, эффективная работа без мыши
  • Автоматический режим: автоматическое сжатие/экранирование с задержкой 400 мс после вставки или редактирования, WYSIWYG
  • Загрузка и скачивание файлов: поддержка перетаскивания или нажатия для загрузки файлов .json/.txt, одним нажатием скачать output.json после обработки
  • Локальная история: localStorage автоматически сохраняет последний введённый контент, не теряется при обновлении страницы
  • Примеры данных: одним нажатием загрузить пример JSON для быстрого ознакомления, подсказки об ошибках с кнопкой исправления
  • Чисто клиентская безопасность: все вычисления выполняются в локальном браузере, данные не загружаются на сервер, работает без интернета

Как использовать

  1. Вставьте JSON-контент в левый редактор, нажмите кнопку загрузки для выбора локального файла .json/.txt или нажмите кнопку «Пример» для загрузки примера
  2. По умолчанию автоматически выполняется режим сжатия (с задержкой 400 мс), также можно вручную нажать кнопку «Сжать» или использовать горячую клавишу Shift+Cmd/Ctrl+C
  3. Для экранирования в строку кода нажмите Shift+Cmd/Ctrl+E или переключите режим на Escape; для восстановления экранированной строки нажмите Shift+Cmd/Ctrl+U
  4. Если в JSON есть синтаксические ошибки, внизу отобразится красное сообщение об ошибке, при наличии исправимых ошибок появится кнопка «Попробовать исправить», нажмите для автоматического исправления
  5. В нижней строке состояния в реальном времени отображаются количество байт до/после сжатия и процент коэффициента сжатия, после подтверждения результата нажмите кнопку «Копировать» или «Скачать»
  6. Разделитель между левой и правой панелями можно перетаскивать для настройки ширины, также можно использовать горячие клавиши для быстрого выполнения всех операций

Часто задаваемые вопросы

В чём разница между сжатием и форматированием JSON?

Форматирование JSON (Beautify) добавляет отступы, переносы строк и пробелы между парами ключ-значение для удобства чтения человеком, подходит для разработки и отладки; сжатие JSON (Minify) удаляет все ненужные пробельные символы (пробелы, переносы строк, табуляцию, отступы), преобразуя многострочный JSON в однострочный компактный формат с целью уменьшения размера и повышения эффективности передачи, подходит для передачи API в продакшене, оптимизации конфигурационных файлов и встраивания в строки кода. Это взаимодополняющие операции — при разработке используйте отформатированную версию, при публикации — сжатую.

Что такое JSON Escape? Когда его нужно использовать?

JSON Escape — это добавление обратной косой черты к специальным символам в JSON-строках (в основном двойные кавычки " преобразуются в \", обратная косая черта \ преобразуется в \\, переносы строк — в \n и т.д.), превращая многострочный JSON-объект в однострочный строковый литерал, который можно напрямую встроить в исходный код JavaScript, Java, Python и других языков. Типичные сценарии: встраивание JSON-ответов как строк в тестовый код при написании юнит-тестов; передача JSON-строк в командах Postman или curl; использование JSON как строкового значения в конфигурационных файлах. Unescape — обратная операция, восстанавливающая экранированную строку в стандартный JSON.

Можно ли успешно сжать JSON с синтаксическими ошибками (например, лишними запятыми)?

Да. В инструмент встроен интеллектуальный движок исправления синтаксиса (tryFixJSON), который перед сжатием автоматически обнаруживает и пытается исправить распространённые ошибки JSON: 1) лишняя запятая в конце (trailing comma), например {"a":1,}; 2) одинарные кавычки вместо двойных, например {'a':1}; 3) незакрытые строки; 4) комментарии JavaScript (// и /* */); 5) лишние запятые в конце и т.д. После исправления выполняется сжатие или экранирование, гарантируя 100% валидный JSON на выходе. Если обнаруживается исправимая ошибка, на панели отображается кнопка «Попробовать исправить», одним нажатием на которую можно исправить всё.

Теряются ли данные при сжатии JSON? Какой обычно коэффициент сжатия?

Данные не теряются. Сжатие JSON только удаляет форматирующие пробельные символы (пробелы, переносы строк, табуляцию), не изменяя имена ключей, значения, типы данных и структуру. После JSON.parse и повторного JSON.stringify данные полностью совпадают с исходными. Коэффициент сжатия зависит от степени форматирования исходного JSON: если это был отформатированный JSON с отступом в 2 пробела, коэффициент сжатия обычно составляет 20%-40% (удаление отступов и переносов); если много последовательных пробелов или комментариев (после исправления), коэффициент сжатия может достигать 50% и более. В строке состояния в реальном времени отображаются исходное количество байт, количество байт после сжатия и точный коэффициент сжатия.

Произойдёт ли утечка при сжатии конфиденциальных JSON-конфигураций или данных API?

Нет. Инструмент использует архитектуру чисто клиентской обработки, все операции парсинга, сжатия, экранирования и исправления JSON выполняются полностью в движке JavaScript вашего локального браузера, данные не загружаются на внешние серверы по сети, инструмент работает даже без интернета. Ваши API-ключи, конфигурации баз данных, бизнес-данные и другая конфиденциальная информация всегда остаются локально.

Какие горячие клавиши поддерживаются?

Для повышения эффективности инструмент предоставляет полную поддержку горячих клавиш (macOS: ⌘+Shift, Windows: Ctrl+Shift): Shift+⌘/Ctrl+C — сжать одним нажатием; Shift+⌘/Ctrl+E — экранировать (Escape); Shift+⌘/Ctrl+U — разэкранировать (Unescape); Shift+⌘/Ctrl+O — загрузить файл; Shift+⌘/Ctrl+D — скачать результат; Shift+⌘/Ctrl+K — очистить. При вводе инструмент также автоматически выполняет текущий режим с задержкой 400 мс (debounce), не нужно многократно нажимать кнопки.

Что такое сжатие JSON (JSON Minify)?

Сжатие 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 — это универсальный алгоритм сжатия на уровне передачи, их можно использовать вместе.

术语表

JSON
JavaScript Object Notation — облегчённый формат обмена данными, использующий пары ключ-значение и структуры массивов, читаемый человеком и легко парсируемый машинами, стандартный формат данных для REST API.
Minify / Сжатие
Процесс удаления всех ненужных символов (пробелов, переносов строк, комментариев) из кода/данных для уменьшения объёма, распространён для фронтенд-ресурсов JS/CSS/JSON.
Beautify / Форматирование
Обратная операция Minify, добавление отступов, переносов строк, пробелов для чёткой и читаемой структуры JSON, также называется Prettify или Pretty Print.
Escape / Экранирование
Добавление обратной косой черты перед специальными символами (например " → \", перенос строки → \n), преобразование многострочного JSON в однострочный строковый литерал для встраивания в код.
Unescape / Разэкранирование
Обратная операция экранирования, восстановление экранированных последовательностей \" , \n , \\ в исходные символы, восстановление стандартного формата JSON.
Trailing Comma
Избыточная запятая после последнего элемента объекта или массива, разрешена в JavaScript, но запрещена стандартом JSON, самая распространённая синтаксическая ошибка JSON.
Gzip / Brotli
Универсальные алгоритмы сжатия на уровне HTTP-передачи, дополняют JSON Minify, наилучший эффект даёт сжатие Gzip после Minify.
Payload
Фактически передаваемое тело данных в API-запросе или ответе (обычно в формате JSON), сжатие Payload напрямую снижает потребление пропускной способности.
CodeMirror
Компонент редактора кода для браузера, в этом инструменте используется для реализации профессионального редактирования: подсветка синтаксиса JSON, номера строк, сопоставление скобок и т.д.

Сравнение сжатия JSON с распространёнными методами сжатия

МетодУровень сжатияБез потерьЧитаемостьСценарий
JSON MinifyУровень контента (удаление пробелов)ДаНечитаемо (одна строка)Продакшен API, оптимизация конфигов
JSON BeautifyУровень контента (добавление пробелов)ДаВысокаяРазработка, отладка, чтение
GzipТранспортный уровеньДаНечитаемо (бинарный)HTTP Content-Encoding
BrotliТранспортный уровеньДаНечитаемо (бинарный)HTTPS статика (на 20% лучше Gzip)
MessagePackУровень сериализацииДаНечитаемо (бинарный)Высокопроизводительный RPC

Таблица экранирования специальных символов JSON

СимволЭкранированныйНазваниеОписание
"\"Двойная кавычкаСамый распространённый символ, обязательный для экранирования в JSON-строках
\\\Обратная косая чертаСам экранирующий символ нуждается в экранировании
Newline\nNewlineОбязательное экранирование при сжатии многострочных строк в одну
Tab\tTabЭкранирование табуляции отступов
Carriage Return\rCarriage ReturnCR в Windows-переносе строки CRLF
/\/Косая чертаСтандарт JSON разрешает, но не требует экранирования (опционально)

Authoritative References