Форматировщик и проверка JSON

Проверьте JSON и отформатируйте его для чтения или компактного хранения прямо в браузере.

Введите данные и выполните расчёт.

Валиден ли ваш JSON? Проверьте, разверните в читаемый вид или сожмите в одну строку

Короткий ответ: «Форматировщик и проверка JSON» пропускает вставленный текст через встроенный в браузер JSON.parse. Если текст корректен, кнопка «Форматировать JSON» выводит его с отступом в два пробела, а «Минифицировать JSON» — одной строкой без лишних пробелов. Если нет, вы увидите сообщение парсера об ошибке, а поле результата останется пустым. Ничего не исправляется.

Главное об инструменте

  • Форматировщик принимает ровно одно JSON-значение: объект, массив, строку, число, true, false или null.
  • Кнопка «Форматировать JSON» сдвигает каждый уровень вложенности на два пробела; настройки для табуляции или четырёх пробелов нет.
  • Кнопка «Минифицировать JSON» выводит то же значение одной строкой, без пробелов и переносов между элементами.
  • Если разбор не удался, в строке статуса появится «Некорректный JSON:» и текст ошибки самого браузера, а поле «Результат» очистится.
  • В скрипте форматировщика нет сетевых запросов, поэтому вставленный текст этим инструментом никуда не отправляется.
  • Ограничения на размер в коде нет; предел задают память и скорость вашего браузера.
  • Результат собирается заново из разобранных данных, поэтому запись чисел, экранированные символы и повторяющиеся ключи могут отличаться от исходных.

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

  1. Вставьте или введите текст в поле «Исходный JSON».
  2. Нажмите «Форматировать JSON», чтобы получить читаемый текст с отступами, или «Минифицировать JSON», чтобы получить одну строку. В строке статуса появится «JSON корректен. Результат готов.», а текст окажется в поле «Результат».
  3. Если статус начинается с «Некорректный JSON:», исправьте текст в исходном поле и нажмите кнопку снова. Любая правка исходного текста также очищает прежний результат.
  4. «Копировать результат» отправляет содержимое поля «Результат» в буфер обмена, «Очистить» стирает оба поля.

Как это работает

Обе кнопки идут по одному пути: текст разбирается один раз, а затем записывается обратно с другим параметром отступа.

parsed = JSON.parse(input)
Форматировать JSON: JSON.stringify(parsed, null, 2)
Минифицировать JSON: JSON.stringify(parsed, null, 0)

Собственного округления в инструменте нет. JavaScript читает любое число JSON как 64-битное число с плавающей точкой, которое точно хранит целые до 9007199254740991 и не выше.

Пример расчёта

Из ответа API вы скопировали заказ интернет-магазина, 174 символа в одной строке (цены в рублях):

{"order":"A-1042","customer":{"name":"Анна","city":"Казань"},"items":[{"sku":"PEN-01","qty":3,"price":149.90},{"sku":"INK-07","qty":1,"price":1200}],"paid":false,"note":null}
ШагСтрокСимволовЧто изменилось
Как вставлено1174Пока ничего
Форматировать JSON21280Отступ в два пробела; цена 149.90 становится 149.9
Минифицировать JSON1173Исчезает только последний ноль в 149.90

Каждый перенос строки считается за один символ. Исходный текст уже был компактным, поэтому минификация сэкономила один символ.

Что в результате отличается от вставленного

Корректный JSON не значит «тот же самый текст». Инструмент превращает текст в данные и печатает новый текст уже из них, поэтому часть записей переписывается.

Вы вставилиВы получилиПричина
1.501.5Числа печатаются в самой короткой записи
1e31000Экспоненциальная запись раскрывается
-00Отрицательный ноль печатается как обычный
1234567890123456789012345678901234567000Значение больше 9007199254740991 и теряет точность
"\u00e9""é"Экранированные символы записываются самим символом
{"a":1,"a":2}{"a":2}При повторе ключа молча побеждает последний

Длинные идентификаторы храните строками

Допустим, база отдала вам 64-битный идентификатор 9007199254740993. После одного прохода через инструмент он превратится в 9007199254740992, а это уже другая запись. Тот же идентификатор в виде строки "9007199254740993" останется нетронутым. Если число на самом деле идентификатор, а не количество, берите его в кавычки.

Неожиданный порядок ключей

Инструмент сохраняет ключи в том порядке, в каком вы их записали, с одним исключением. Ключи, похожие на неотрицательные целые числа, переезжают в начало по возрастанию. Объект {"b":1,"2":2,"1":3,"a":4} выйдет с ключами в порядке 1, 2, b, a. Сравнивайте структуру по ключам, а не по позиции.

Почему «похожий на JSON» текст не проходит проверку

Что вставленоПочему парсер останавливается
{"a":1,}Запятая перед закрывающей скобкой недопустима.
{'a':1}Строки и ключи берутся только в двойные кавычки.
{a:1}Ключ должен быть строкой в кавычках.
{"a":undefined}undefined, NaN и Infinity не являются значениями JSON.
{"a":01}Ведущие нули в числах не допускаются.
// заметка перед объектомВ JSON нет комментариев.
Настоящая табуляция внутри строкиУправляющие символы нужно экранировать, например как \t.

Как читать сообщение об ошибке

Текст ошибки приходит от браузера, поэтому формулировка и подробности зависят от движка. В V8 (Chrome, Edge, Node.js) запятая в конце {"a":1,} даёт «Expected double-quoted property name in JSON at position 7 (line 1 column 8)», а пустое поле — «Unexpected end of JSON input». Эти сообщения выводятся на английском.

Смотрите не только на указанную позицию, но и на один элемент раньше. Пропущенная запятая или незакрытая кавычка выше по тексту часто заставляет парсер ругаться на более поздний символ.

Чего инструмент не делает

  • Он не чинит сломанный JSON: лишние запятые, одинарные кавычки, комментарии и ключи без кавычек дают ошибку.
  • Он не проверяет JSON Schema и бизнес-правила вроде обязательных полей, типов и диапазонов значений.
  • Он не читает несколько значений сразу, поэтому файл JSON Lines с одним объектом на строку будет признан некорректным.
  • В нём нет выбора отступа, сортировки ключей, подсветки синтаксиса и загрузки файла; ввод возможен только через текстовое поле.

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

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

Вставьте текст в поле «Исходный JSON» и нажмите «Форматировать JSON» или «Минифицировать JSON». Если текст разобран, в строке статуса будет «JSON корректен. Результат готов.», если нет — «Некорректный JSON:» и сообщение парсера.

Сколько пробелов в отступе у форматировщика JSON?

Два пробела на каждый уровень вложенности. Настройки для табуляции или четырёх пробелов в инструменте нет.

Исправит ли инструмент лишние запятые и одинарные кавычки?

Нет, он лишь сообщает о первой синтаксической ошибке, которую нашёл парсер. Исправьте текст в исходном поле сами и нажмите кнопку ещё раз.

Отправляется ли мой JSON на сервер?

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

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

Инструмент не задаёт ограничений; предел определяют память и скорость браузера. Очень большой документ может замедлить вкладку или заставить её зависнуть.

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

JavaScript читает числа JSON как 64-битные числа с плавающей точкой, поэтому целые больше 9007199254740991 теряют точность. Например, 12345678901234567890 превращается в 12345678901234567000. Такие идентификаторы лучше хранить строками.

Меняет ли минификация мои данные?

Значения она сохраняет, но текст переписывает. Пробелы удаляются, 1.50 становится 1.5, экранированные последовательности вроде \u00e9 заменяются самим символом, а у повторяющегося ключа остаётся только последнее значение.

Почему JSON считается некорректным, если мой код его принимает?

Инструмент использует строгий синтаксис JSON. Объектные литералы JavaScript, JSON5 и многие конфигурационные форматы допускают комментарии, одинарные кавычки, ключи без кавычек и лишние запятые, а строгий парсер их отвергает.

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

Проверено: