CodeKitHub
Инструменты JSON

Онлайн-форматтер и валидатор JSON

Последнее обновление:

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

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

  1. Вставьте свой JSON в поле ввода слева (или нажмите «Загрузить пример», чтобы попробовать).
  2. Выберите отступ в 2 или 4 пробела.
  3. Нажмите «Форматировать», чтобы придать тексту более привлекательный вид, или «Сжать», чтобы сжать его до одной строки.
  4. Если JSON-файл содержит ошибки, ознакомьтесь с сообщением об ошибке, расположенным под полями ввода, чтобы выявить проблему.
  5. Нажмите «Копировать», чтобы скопировать результат в буфер обмена.

Пример

Ввод

{"name":"CodeKitHub","tools":["json","base64"],"free":true}

Результат

{
  "name": "CodeKitHub",
  "tools": [
    "json",
    "base64"
  ],
  "free": true
}

Те же данные, отформатированные с отступом в 2 пробела. Функция «Минимизировать» действует наоборот: она удаляет все пробелы.

Что это за инструмент?

Форматировщик JSON принимает исходный, минимизированный или неструктурированный текст JSON и переформатирует его, добавляя правильные отступы и разрывы строк, чтобы текст стал легко читаемым. JSON (JavaScript Object Notation) — это наиболее распространённый формат данных, используемый в API, конфигурационных файлах и системах ведения журналов, однако серверы обычно отправляют его в виде одной длинной нечитаемой строки, чтобы сэкономить пропускную способность.

Этот инструмент также выполняет функцию валидатора JSON: он анализирует введенные данные по тем же строгим правилам, что и браузеры, поэтому если в вашем JSON отсутствует запятая, ключ не заключен в кавычки или есть лишняя запятая в конце, вы увидите точное сообщение об ошибке, а не просто незаметную ошибку.

Формально JSON описан двумя согласованными стандартами — RFC 8259 и ECMA-404, — причём спецификация намеренно строже самого JavaScript: именно поэтому фрагмент, который без проблем выполняется как JS-код, может не пройти здесь строгую валидацию JSON.

Практические советы

  • Отлаживаете API? Сначала вставьте исходный текст ответа, а уже потом форматируйте его — валидатор точно укажет строку и столбец, в которых находится любая синтаксическая ошибка, что гораздо удобнее, чем прищуриваться, разглядывая однострочный набор символов.
  • Для удобства чтения с экрана используйте отступ в 2 пробела и сжимайте JSON перед вставкой в URL, переменную среды или сообщение в чате — там пробелы только занимают место.
  • Комментарии в стиле JSON5 и запятые в конце списка — две наиболее распространённые причины, по которым конфигурация, написанная вручную, «выглядит нормально», но не проходит валидацию: строгий JSON не допускает ни того, ни другого.
  • В случае очень больших файлов (журналы, дампы баз данных) форматируйте только тот фрагмент, который вас интересует — так ваш редактор будет работать без задержек, а структуру будет проще отслеживать.

Как это вписывается в реальные рабочие процессы

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

Фронтенд-разработчики используют минимизацию не реже, чем форматирование: нужно разместить большой статический файл JSON? Его минимизация, как правило, позволяет сэкономить 20–30 % объёма ещё до начала сжатия с помощью gzip.

Кодировщик/декодировщик Base64 · Сравнение текстов

Типичные ошибки JSON и как их исправить

Большинство сообщений о «невалидном JSON» сводятся к небольшому набору повторяющихся причин. В таблице ниже — те, что чаще всего встречаются при ручном редактировании конфигурационных файлов или отладке скопированного ответа API.

ОшибкаПримерИсправление
Запятая в конце{"a": 1, "b": 2,}Уберите запятую после последнего элемента объекта или массива.
Одинарные кавычки{'a': 1}JSON требует двойные кавычки для ключей и строковых значений.
Ключ без кавычек{a: 1}Заключите каждый ключ в двойные кавычки: {"a": 1}.
Комментарии{ // заметка\n "a": 1 }В строгом JSON нет синтаксиса комментариев — удалите // и /* */ перед проверкой.
Пропущенная запятая{"a": 1 "b": 2}Вставьте запятую между каждой парой ключ-значение.
NaN / undefined / Infinity{"a": NaN}Это валидно в JavaScript, но не в JSON — используйте null или строку.

Типичные сценарии использования

  • Чтение сжатого ответа API, возвращаемого одной нечитаемой строкой, с целью понимания его структуры в процессе отладки.
  • Проверка файла конфигурации (например, package.json или файла настроек в формате JSON), который по неизвестной причине некорректно считывается приложением.
  • Размещение удобного для чтения, отформатированного фрагмента JSON в отчете об ошибке, при рецензировании кода или в документации.
  • Сжатие JSON-данных до минимального размера перед их вставкой в параметр URL или сохранением в столбце базы данных с ограничениями по размеру.

Зачем его использовать?

API вернул ошибку 400 одной нечитаемой строкой — вставьте её сюда, чтобы увидеть, какое именно поле не прошло проверку, вместо того чтобы вручную искать в стене текста.

Сборка падает с «Unexpected token in JSON at position 214» и больше никаких подсказок — вставьте файл, и сообщение об ошибке укажет точную строку и столбец.

Нужно вставить объект конфигурации в тег <script> или отправить его через API с ограничением на размер запроса — сначала минимизируйте и уберите лишние пробелы, прежде чем данные покинут ваш компьютер.

В JSON, который вы отлаживаете, есть данные клиентов или ключи API — здесь важно, что всё работает локально и ничего не отправляется на сторонний сервер просто чтобы прочитать содержимое.

Проверяете pull request коллеги с намеренно минифицированной JSON-фикстурой — отформатируйте её здесь, чтобы diff в ревью действительно был понятен.

Никакой регистрации между вами и инструментом — открывается на телефоне посреди дежурства в три часа ночи и работает точно так же, как на рабочем ноутбуке.

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

Загружаются ли мои данные в формате JSON на сервер?

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

Почему мой JSON неверный?

Наиболее распространёнными причинами являются: пропущенные или лишние запятые, ключи без двойных кавычек, одинарные кавычки вместо двойных, запятые после последнего элемента, а также комментарии (в JSON комментарии не допускаются). Сообщение об ошибке под полем ввода указывает, что именно обнаружил парсер.

В чём разница между «Формат» и «Минимизировать»?

Функция «Формат» добавляет отступы и разрывы строк, чтобы сделать JSON удобным для чтения человеком. Функция «Минимизировать» удаляет все ненужные пробелы, чтобы максимально уменьшить размер JSON — это полезно перед его передачей или встраиванием.

Есть ли ограничения по размеру?

Инструмент не устанавливает жестких ограничений. Обработка очень больших файлов (размером в десятки мегабайт) может занимать много времени в зависимости от вашего устройства, поскольку вся обработка происходит локально в браузере.

Может ли этот код автоматически исправить некорректный JSON?

Нет — инструмент точно указывает, где в JSON-файле есть ошибки, чтобы вы могли их исправить, но он не пытается угадывать и не изменяет ваши данные. Это сделано намеренно: «исправление» данных без уведомления может скрыть настоящие ошибки.

Поддерживается ли JSON5 или JSONC (комментарии, запятая в конце, ключи без кавычек)?

Нет, и это осознанное решение — валидация строго следует RFC 8259, тому же стандарту, который требуют ваш API и JSON.parse(). Если нужно отформатировать файл JSONC (например, tsconfig.json или настройки VS Code), сначала удалите комментарии — иначе парсер пометит их как ошибку.

Чем это отличается от простого JSON.stringify в консоли браузера?

JSON.stringify(JSON.parse(x), null, 2) делает то же самое переформатирование, но требует открытой консоли, а при невалидном вводе выдаёт лишь общую ошибку без указания строки и столбца — в отличие от этого инструмента.

Работает ли инструмент с сильно вложенным JSON, например ответами GraphQL?

Да — искусственного ограничения по глубине вложенности нет, есть только практический предел памяти браузера и терпения при прокрутке. Именно на глубоко вложенных структурах форматирование помогает больше всего, поскольку однострочная версия становится почти нечитаемой уже после третьего-четвёртого уровня.

Работает ли инструмент без подключения к интернету?

Да. После загрузки страницы вся логика разбора и форматирования выполняется локально на JavaScript — можно отключиться от сети и продолжать форматировать JSON.

Работает ли это в старых браузерах?

Инструмент работает в любом современном браузере с поддержкой JavaScript ES6 (актуальные версии Chrome, Firefox, Safari, Edge). В очень старых браузерах или при отключённом JavaScript страница просто не загрузится, поскольку вся обработка выполняется локальным движком JS.

Похожие инструменты