Форматирование и проверка JSON
Вставьте исходный, минифицированный или «грязный» JSON, чтобы мгновенно проверить его и красиво отформатировать с нужным отступом. Инструмент также показывает точную строку и столбец любой синтаксической ошибки.
Отформатируйте и проверьте свой JSON
Формула форматирования JSON
Где:
- \(raw\) — текст JSON, вставленный в поле ввода
- \(indent\) — выбранный отступ: 0 (компактно), 2 пробела, 4 пробела или символ табуляции
- \(output\) — отформатированный (с отступами) результат
- \(minified\) — те же данные, из которых удалены все лишние пробелы
Инструмент сначала разбирает исходный текст, чтобы убедиться, что это синтаксически корректный JSON, а затем снова сериализует его. Если разбор завершается неудачей, парсер сообщает позицию символа с ошибкой, которая преобразуется в номер строки и столбца, чтобы вы могли мгновенно найти проблему.
Форматирование JSON — пример расчёта
Пример: вставьте значение по умолчанию в поле Исходный JSON и оставьте для параметра Отступ значение «2 пробела»:
\(raw = \{"name":"WPCalc","version":2,"free":true,"features":["calculators","converters","tools"],"site":\{"url":"https://wpcalc.com","languages":["en"]\}\}\)
Результат: ввод успешно разобран — статус проверки показывает «✓ Корректный JSON — значение верхнего уровня является объектом», а поле форматированного JSON выводит:
\(\{\)
\("name": "WPCalc",\)
\("version": 2,\)
\("free": true,\)
\("features": [\)
\("calculators",\)
\("converters",\)
\("tools"\)
\(],\)
\("site": \{\)
\("url": "https://wpcalc.com",\)
\("languages": [\)
\("en"\)
\(]\)
\(\}\)
\(\}\)
Поле «Минифицированный JSON» показывает те же данные в одну строку: {"name":"WPCalc","version":2,"free":true,"features":["calculators","converters","tools"],"site":{"url":"https://wpcalc.com","languages":["en"]}}
Как пользоваться калькулятором
- Вставьте исходный, минифицированный или «грязный» JSON в текстовое поле Исходный JSON.
- Выберите стиль отступа для форматированного вывода: минифицированный (компактный), 2 пробела, 4 пробела или табуляция.
- Прочитайте статус проверки. Если JSON корректен, вы увидите тип данных верхнего уровня, количество элементов для массивов и длину введённого текста в символах.
- Скопируйте нужный результат из поля Форматированный JSON или Минифицированный JSON.
- Если JSON некорректен, строка состояния покажет сообщение об ошибке парсера вместе со строкой и столбцом проблемного символа и коротким фрагментом окружающего текста, чтобы вы могли сразу исправить синтаксическую ошибку.
Что такое JSON и зачем нужно форматирование
JSON (JavaScript Object Notation) — лёгкий текстовый формат для хранения и обмена структурированными данными. Это стандартный формат данных для REST API, файлов конфигурации, записей журналов и конвейеров обработки данных. Документ JSON строится из шести типов значений: объекты (пары «ключ–значение» в фигурных скобках), массивы (упорядоченные списки в квадратных скобках), строки, числа, логические значения и null.
Когда JSON передаётся по сети или генерируется программой, он обычно минифицирован: все переносы строк и лишние пробелы удалены ради экономии трафика. Минифицированный файл эффективен, но практически нечитаем для человека — одна длинная строка из тысяч символов затрудняет изучение структуры и поиск не на месте стоящей скобки. Красивая печать (добавление отступов и переносов строк на каждом уровне вложенности) устраняет это, давая каждому ключу и значению собственную строку и наглядно раскрывая иерархию вложенности.
Проверка — вторая половина инструмента. Строго говоря, у JSON нет «формул» — он либо разбирается, либо нет. Типичные ошибки: завершающая запятая перед закрывающей скобкой, одинарные кавычки вместо двойных, ключи без кавычек, комментарии (не входящие в стандарт JSON) или неэкранированная кавычка внутри строки. Вместо того чтобы завершаться непонятной ошибкой сервера, этот калькулятор указывает точную строку и столбец, где разбор прервался, превращая изматывающую отладку в однострочное исправление.
Вывод также сообщает тип верхнего уровня вашего документа. Если вы ожидали объект, а парсер сообщает массив (или просто строку либо число), вы сразу понимаете, что форма данных отличается от ваших предположений — частый источник ошибок при интеграции сторонних API.
Советы, допущения и ограничения
- Завершающие запятые и комментарии отклоняются. Парсер следует спецификации JSON (RFC 8259). В отличие от литералов объектов JavaScript, JSON не допускает завершающих запятых, комментариев и ключей без кавычек.
- Ключи сохраняют исходный порядок. Форматирование не сортирует ключи; вывод сохраняет порядок, в котором ключи появляются во вводе.
- Числа нормализуются. Повторная сериализация может переписать запись чисел (например,
1.50станет1.5, а1e3—1000). Очень большие целые числа могут потерять точность, так как обрабатываются как числа двойной точности с плавающей запятой. - Дублирующиеся ключи незаметно схлопываются. Если один и тот же ключ встречается в объекте дважды, в выводе останется только последнее значение.
- Выбирайте «Минифицированный» перед развёртыванием. Копируйте минифицированный вывод для продуктива — меньшие файлы загружаются быстрее, и именно их обычно ожидают API и инструменты сборки. Используйте вид с 2 или 4 пробелами во время разработки и проверки кода.
Связанные инструменты
JSON часто встраивается или кодируется внутри других форматов. Если ваш JSON пришёл в обёртке кодирования, сначала воспользуйтесь декодером Base64 или декодером URL, а затем вставьте декодированный текст сюда. Чтобы узнать, сколько пробелов фактически сэкономила минификация, прогоните вывод через счётчик символов, а если вы работаете и со скриптами, инструмент сжатия JavaScript может минифицировать ваши JS-файлы тем же способом.
Часто задаваемые вопросы
Как проверить или отформатировать JSON без онлайн-инструмента?
В командной строке выполните python -m json.tool file.json для красивой печати и проверки или jq . file.json, если у вас установлен jq. В JavaScript эквивалентами являются JSON.parse(text) для проверки и JSON.stringify(obj, null, 2) для форматирования. Все они следуют той же строгой грамматике RFC 8259, поэтому отклоняют одни и те же ошибки: завершающие запятые, строки в одинарных кавычках и комментарии.
В чём разница между JSON и литералом объекта JavaScript?
JSON — строгий текстовый формат; литерал объекта JavaScript — это код. JSON требует, чтобы ключи были заключены в двойные кавычки, допускает только строки в двойных кавычках и запрещает завершающие запятые, комментарии и выражения вроде new Date() или undefined без кавычек. Литерал вида {name: "WPCalc",} — корректный JavaScript, но некорректный JSON. Если сомневаетесь, прогоните текст через валидатор, прежде чем предполагать, что он успешно разберётся.
Почему мой JSON не проходит проверку, хотя выглядит правильно?
Сначала проверьте невидимые символы: метка порядка байтов (BOM) в начале файла, неразрывные пробелы, скопированные с веб-страницы, или «умные» кавычки (« »), вставленные из текстового процессора, — всё это ломает разбор. Другие частые виновники — неэкранированная двойная кавычка внутри строки (пишите \"), буквальный перенос строки внутри строки (пишите \n) и завершающая запятая перед } или ]. Отчёт со строкой и столбцом точно укажет, какая из причин.
Может ли верхний уровень JSON-документа быть чем-то иным, кроме объекта?
Да. Спецификация JSON допускает любое единичное значение на верхнем уровне: объект, массив, строку, число, логическое значение или null. Отдельная строка вроде "hello" или число 42 — вполне корректный JSON, хотя большинство API отправляют объекты или массивы. Если валидатор сообщает, что значение верхнего уровня — строка, оберните данные в объект или массив, если именно этого ожидает потребитель.
Что такое JSON5 и JSONC и почему они не проходят проверку здесь?
JSON5 добавляет удобства: ключи без кавычек, одинарные кавычки, завершающие запятые и комментарии; JSONC — это JSON с комментариями, используемый редакторами вроде VS Code для файлов настроек. Оба являются надмножествами JSON, но ни один не является стандартным JSON, поэтому строгий парсер RFC 8259 их отклоняет. Если у вас файл JSONC или JSON5, удалите комментарии и исправьте синтаксис перед использованием со стандартными инструментами и API.
Насколько минификация фактически уменьшает размер JSON-файла?
Это зависит от того, насколько сильно отформатирована версия с отступами. Переход от 4 пробелов к минифицированному виду обычно сокращает размер на 30–60%, поскольку при форматировании каждый ключ, скобка и запятая получают переносы строк и пробелы-отступы. Для небольших объёмов данных экономия незначительна; для больших ответов API и пакетов конфигурации, отдаваемых множеству пользователей, она накапливается. Прогоните вывод через счётчик символов, чтобы сравнить размеры до и после.
Меняет ли форматирование или повторная сериализация JSON мои данные?
Структура и порядок ключей остаются прежними, но запись чисел может измениться: 1.50 станет 1.5, 1e3 — 1000, а целые числа длиннее примерно 15 значащих цифр могут потерять точность, поскольку хранятся как числа двойной точности с плавающей запятой. Дублирующиеся ключи в одном объекте также схлопываются до последнего значения. Если важна точная передача чисел — например, для больших идентификаторов, — сохраните исходный текст.