JSON Formatter

Форматирование, валидация и минификация JSON. Работает в браузере.

Как отформатировать и проверить JSON онлайн

Форматтер разбирает JSON стандартным парсером браузера (JSON.parse) и выводит документ с отступом в 2 или 4 пробела либо в минифицированном виде — одной строкой без лишних пробелов. Если документ не разбирается, вместо результата появляется сообщение парсера с описанием ошибки.

Обработка выполняется в браузере: JSON не отправляется на сервер PingDesk. Ответы API нередко содержат токены, email и другие персональные данные, поэтому вставлять их в сервисы, которые обрабатывают данные на своей стороне, рискованно.

Ниже — правила синтаксиса JSON, разбор частых ошибок, разница между JSON, JSON5 и YAML и особенности, которые стоит знать, прежде чем копировать результат обратно в проект.

Как пользоваться форматтером

  1. 1Вставьте JSON в поле ввода — ответ API, тело вебхука, конфигурацию или строку из лога.
  2. 2Выберите отступ: 2 или 4 пробела.
  3. 3Нажмите «Форматировать», чтобы получить читаемый документ с отступами, или «Минифицировать», чтобы убрать все пробелы и переносы. Обе кнопки заодно проверяют синтаксис.
  4. 4Если появилось сообщение об ошибке, найдите указанное место в документе. Текст ошибки формирует браузер, обычно на английском, например «Expected double-quoted property name in JSON at position 7». Частые причины собраны в таблице ниже.
  5. 5Скопируйте результат значком копирования в правом верхнем углу поля.

Правила синтаксиса JSON

JSON описан в RFC 8259 и ECMA-404 и намеренно прост. В нём шесть типов значений: объект, массив, строка, число, логическое значение и null. Всё, что выходит за эти правила, — ошибка, даже если такая запись допустима в JavaScript.

  • Объект — пары «ключ: значение» в фигурных скобках через запятую. Ключ — всегда строка в двойных кавычках.
  • Массив — значения в квадратных скобках через запятую. После последнего элемента запятая не ставится.
  • Строки — только в двойных кавычках. Кавычка, обратный слеш и управляющие символы экранируются: \", \\, \n, \t, \uXXXX.
  • Числа — десятичные, без ведущих нулей и знака + в начале. Значений NaN и Infinity и шестнадцатеричной записи вида 0xFF в JSON нет.
  • Логические значения и пустое значение — только true, false и null в нижнем регистре. undefined в JSON не существует.
  • Комментариев в JSON нет. Пробелы, табуляции и переносы между элементами допустимы и не влияют на данные.

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

Большинство ошибок появляется, когда JSON пишут вручную или копируют из JavaScript-кода, логов и конфигураций в других форматах. Парсер останавливается на первой ошибке: исправив её, запустите проверку снова — следующая может оказаться дальше по документу.

Типичные синтаксические ошибки
ОшибкаНеверноВерно
Запятая после последнего элемента{"a": 1, "b": 2,}{"a": 1, "b": 2}
Одинарные кавычки{'name': 'PingDesk'}{"name": "PingDesk"}
Ключ без кавычек{name: "PingDesk"}{"name": "PingDesk"}
Комментарий{"port": 443 // HTTPS}{"port": 443}
Значение из JavaScript{"value": undefined}{"value": null}
Ведущий ноль в числе{"code": 007}{"code": "007"} или {"code": 7}
Буквальный перенос строки внутри строки"первая<перенос>вторая""первая\nвторая"
Незакрытая скобка{"items": [1, 2, 3}{"items": [1, 2, 3]}

Форматирование и минификация: когда что нужно

Форматирование (pretty print) расставляет переносы и отступы, чтобы структуру было видно глазами. Это удобно для отладки, код-ревью и хранения конфигураций в Git: изменения в диффе становятся построчными.

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

Что меняется в данных при форматировании

Форматтер не просто переставляет пробелы: он разбирает документ в объект JavaScript и сериализует его заново. Для корректного JSON это безопасно, но есть особенности, о которых стоит знать, прежде чем вставлять результат обратно в проект.

  • Дублирующиеся ключи. Если ключ встречается в объекте дважды, останется только последнее значение — без предупреждения. Стандарт требует уникальности ключей лишь как рекомендации, и разные парсеры обрабатывают дубли по-разному.
  • Большие целые числа. Числа больше 2^53 − 1 (9 007 199 254 740 991) теряют точность: 12345678901234567890 превратится в 12345678901234567000. Это типичная проблема 64-битных идентификаторов из баз данных — их безопаснее передавать строками.
  • Запись чисел нормализуется: 1.0 станет 1, а 1e3 — 1000.
  • Порядок ключей. Ключи, похожие на неотрицательные целые числа ("1", "2", "10"), выводятся первыми по возрастанию, остальные — в исходном порядке.
  • Escape-последовательности раскрываются: \u0416 станет буквой Ж, а \/ — обычным слешем. Данные при этом остаются теми же.

JSON, JSON5 и YAML: в чём разница

JSON строг ради совместимости: любой парсер на любом языке прочитает его одинаково. Для конфигураций, которые пишут люди, появились более мягкие форматы. Файлы вроде tsconfig.json и настроек VS Code — это JSONC, JSON с комментариями. YAML 1.2 почти полностью совместим с JSON: валидный JSON, как правило, является и валидным YAML.

Этот инструмент проверяет только строгий JSON: документ JSON5 или JSONC с комментариями и запятыми в конце он отметит как ошибочный.

ВозможностьJSONJSON5YAML
КомментарииНет// и /* */#
Запятая после последнего элементаНетДаНе нужна в блочном синтаксисе
Ключи без кавычекНетДа, если ключ — идентификаторДа
Одинарные кавычкиНетДаДа
Многострочные строкиТолько через \nЧерез \ в конце строкиБлоки | и >
Типичное применениеAPI, обмен данными, package.jsonКонфигурации, которые правят вручнуюDocker Compose, Kubernetes, CI

Как проверять JSON-ответы API

Когда API возвращает ошибку или неожиданные данные, первым делом посмотрите на сырой ответ. Получите его через curl -s https://api.example.ru/v1/status или вкладку Network в DevTools, вставьте сюда и отформатируйте — вложенная структура сразу станет читаемой.

  • Проверьте заголовок Content-Type: для JSON это application/json. Если сервер отдаёт text/html, вместо данных вы, скорее всего, получили страницу ошибки прокси или WAF.
  • Ошибка на первом символе с упоминанием токена < означает, что ответ — HTML-страница, а не JSON.
  • Сверьте типы: "42" и 42, "true" и true, null и отсутствующее поле — разные вещи для клиентского кода.
  • Разовая проверка показывает ответ только в моменте. Чтобы узнать, что поле исчезло или изменило значение после деплоя, нужна автоматическая проверка по расписанию.

Частые вопросы

Как проверить JSON на ошибки онлайн?

+

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

Почему JSON не проходит валидацию?

+

Самые частые причины — запятая после последнего элемента, одинарные кавычки, ключи без кавычек, комментарии, незакрытая скобка или значения из JavaScript вроде undefined и NaN. Ещё одна частая ситуация — вместо JSON сервер вернул HTML-страницу ошибки.

Чем JSON отличается от объекта JavaScript?

+

JSON — текстовый формат со строгими правилами: ключи и строки только в двойных кавычках, без запятой в конце и без комментариев. В нём нет функций, undefined, дат и произвольных выражений. Объект JavaScript превращают в JSON функцией JSON.stringify, а обратно — JSON.parse.

Зачем минифицировать JSON?

+

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

Можно ли писать комментарии в JSON?

+

В стандартном JSON — нет, и парсер выдаст ошибку. Если комментарии нужны в конфигурации, используйте JSONC (так устроены tsconfig.json и настройки VS Code), JSON5 или YAML, но учитывайте, что строгий парсер такие файлы не примет.

Почему после форматирования изменилось большое число?

+

JavaScript хранит числа в формате с плавающей точкой, и целые больше 9 007 199 254 740 991 (2^53 − 1) теряют точность. Поэтому 12345678901234567890 после форматирования станет 12345678901234567000. Длинные идентификаторы в API безопаснее передавать строками.

Как отформатировать JSON в командной строке?

+

Удобнее всего утилита jq: curl -s URL | jq . выведет ответ с отступами. Без установки дополнительных программ подойдёт python3 -m json.tool file.json. В PowerShell — Get-Content file.json -Raw | ConvertFrom-Json | ConvertTo-Json -Depth 10.

Что означает ошибка Unexpected token в JSON?

+

Парсер встретил символ, которого не ожидал в этом месте: одинарную кавычку, букву вместо значения, лишнюю запятую или начало HTML-страницы. Найдите указанную позицию и проверьте символы перед ней. Если ошибка на первом символе и токен — <, сервер вернул HTML вместо JSON.

Связанные инструменты