Валиден ли ваш JSON? Проверьте, разверните в читаемый вид или сожмите в одну строку
Короткий ответ: «Форматировщик и проверка JSON» пропускает вставленный текст через встроенный в браузер JSON.parse. Если текст корректен, кнопка «Форматировать JSON» выводит его с отступом в два пробела, а «Минифицировать JSON» — одной строкой без лишних пробелов. Если нет, вы увидите сообщение парсера об ошибке, а поле результата останется пустым. Ничего не исправляется.
Главное об инструменте
- Форматировщик принимает ровно одно JSON-значение: объект, массив, строку, число, true, false или null.
- Кнопка «Форматировать JSON» сдвигает каждый уровень вложенности на два пробела; настройки для табуляции или четырёх пробелов нет.
- Кнопка «Минифицировать JSON» выводит то же значение одной строкой, без пробелов и переносов между элементами.
- Если разбор не удался, в строке статуса появится «Некорректный JSON:» и текст ошибки самого браузера, а поле «Результат» очистится.
- В скрипте форматировщика нет сетевых запросов, поэтому вставленный текст этим инструментом никуда не отправляется.
- Ограничения на размер в коде нет; предел задают память и скорость вашего браузера.
- Результат собирается заново из разобранных данных, поэтому запись чисел, экранированные символы и повторяющиеся ключи могут отличаться от исходных.
Как пользоваться
- Вставьте или введите текст в поле «Исходный JSON».
- Нажмите «Форматировать JSON», чтобы получить читаемый текст с отступами, или «Минифицировать JSON», чтобы получить одну строку. В строке статуса появится «JSON корректен. Результат готов.», а текст окажется в поле «Результат».
- Если статус начинается с «Некорректный JSON:», исправьте текст в исходном поле и нажмите кнопку снова. Любая правка исходного текста также очищает прежний результат.
- «Копировать результат» отправляет содержимое поля «Результат» в буфер обмена, «Очистить» стирает оба поля.
Как это работает
Обе кнопки идут по одному пути: текст разбирается один раз, а затем записывается обратно с другим параметром отступа.
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}
| Шаг | Строк | Символов | Что изменилось |
|---|---|---|---|
| Как вставлено | 1 | 174 | Пока ничего |
| Форматировать JSON | 21 | 280 | Отступ в два пробела; цена 149.90 становится 149.9 |
| Минифицировать JSON | 1 | 173 | Исчезает только последний ноль в 149.90 |
Каждый перенос строки считается за один символ. Исходный текст уже был компактным, поэтому минификация сэкономила один символ.
Что в результате отличается от вставленного
Корректный JSON не значит «тот же самый текст». Инструмент превращает текст в данные и печатает новый текст уже из них, поэтому часть записей переписывается.
| Вы вставили | Вы получили | Причина |
|---|---|---|
| 1.50 | 1.5 | Числа печатаются в самой короткой записи |
| 1e3 | 1000 | Экспоненциальная запись раскрывается |
| -0 | 0 | Отрицательный ноль печатается как обычный |
| 12345678901234567890 | 12345678901234567000 | Значение больше 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 и многие конфигурационные форматы допускают комментарии, одинарные кавычки, ключи без кавычек и лишние запятые, а строгий парсер их отвергает.
Связанные инструменты
Проверено: