Как пользоваться
- Вставьте JSON — ответ API, файл настроек, строку из лога — в поле. Проверка и форматирование происходят сразу при вставке.
- Выберите Форматировать, чтобы получить читаемый JSON с отступом в 2 или 4 пробела либо табуляцией, или Сжать, чтобы убрать все пробелы и переносы между значениями.
- Отметьте Сортировать ключи, и свойства каждого объекта встанут по алфавиту — так проще сравнивать две версии одних и тех же данных. Порядок элементов массивов не меняется.
- Нажмите Копировать рядом с результатом. Если JSON некорректен, вы увидите описание ошибки, номер строки и столбца и саму строку со знаком ^ под проблемным местом.
Что делают форматирование, сжатие и проверка
Форматирование (его ещё называют beautify или pretty print) ставит каждое свойство и каждый элемент массива на отдельную строку и делает отступ по глубине вложенности. Сжатие (минификация) делает обратное — оставляет самую компактную запись. Ни то ни другое не меняет данные. Валидатор сверяет текст со стандартом JSON — RFC 8259 (та же грамматика, что в ECMA-404): имена и строки в двойных кавычках, никаких запятых после последнего элемента и комментариев, true, false и null строчными буквами, числа без ведущих нулей, без NaN и Infinity. Показывается первая найденная ошибка.
Многие онлайн-форматтеры прогоняют текст через JSON.parse из JavaScript и печатают его заново. Этот инструмент сам разбирает текст и сохраняет каждое значение в точности:
- Большие числа не округляются. JavaScript точно хранит целые числа только до 9 007 199 254 740 991 (253 − 1). После
JSON.parseидентификатор 12345678901234567890 превращается в 12345678901234567000 — классическая беда с 64-битными ID из баз данных. Здесь он остаётся как есть, как и 349.00 или 1E+2. - Порядок ключей сохраняется. Объекты JavaScript ставят ключи, похожие на целые числа («1», «2»), в начало, поэтому
JSON.parseих переставляет; здесь порядок меняется только при сортировке. - Строки копируются символ в символ, включая escape-последовательности вроде
\u0436и\/; кириллица не превращается в \u-коды. - Повторяющиеся ключи подсчитываются. RFC 8259 требует, чтобы имена в объекте были уникальными, потому что программы по-разному решают, какое из двух значений победит.
Дробные числа: в JSON только точка
В русском языке дробь пишут через запятую: 12,50 ₽. В JSON запятая разделяет значения, поэтому десятичный разделитель — только точка: 12.50. Ошибка проявляется по-разному в зависимости от места:
- В объекте
{"price": 12,50}парсер читает 12, видит запятую и ждёт имя следующего свойства, поэтому сообщает «Имя свойства без кавычек» в столбце 14. - В массиве
[12,50]ошибки нет вовсе: это корректный JSON из двух чисел, 12 и 50. Такие данные пройдут любую проверку, но цена потеряет копейки, поэтому дробные числа из Excel и 1С стоит проверять глазами. - Пробел как разделитель разрядов (
1 490) тоже недопустим: пишите1490. Если важно сохранить именно запись с запятой, храните число строкой:"12,50".
Частые ошибки JSON и как их исправить
| Ошибка | Неверно | Верно |
|---|---|---|
| Лишняя запятая в конце | {"a": 1, "b": 2,} | {"a": 1, "b": 2} |
| Одинарные кавычки | {'name': 'Иван'} | {"name": "Иван"} |
| Имя свойства без кавычек | {name: "Иван"} | {"name": "Иван"} |
| Комментарий | {"port": 80 // web} | {"port": 80} |
| Нет запятой | [1 2 3] | [1, 2, 3] |
| Ёлочки или кавычки из Word | {"city": «Москва»} | {"city": "Москва"} |
| Значения из Python или JavaScript | {"x": None, "y": True, "z": undefined} | {"x": null, "y": true, "z": null} |
| Ведущий ноль | {"inn": 0123456789} | {"inn": "0123456789"} |
| Одиночная обратная косая черта | {"path": "C:\Users"} | {"path": "C:\\Users"} |
| Несколько значений подряд | {"a": 1} {"b": 2} | [{"a": 1}, {"b": 2}] |
Если не хватает закрывающей скобки, парсер замечает это только в самом конце, поэтому «JSON неожиданно закончился» указывает на последнюю строку, хотя пропущенная } или ] находится выше. Быстрее всего найти её так: отформатируйте корректную часть и посмотрите, где отступы перестают выглядеть логично.
Пример: насколько отступы увеличивают JSON
В поле — однострочный ответ API интернет-магазина: 362 байт, 18 ключей, 4 уровня вложенности. В UTF-8 каждая русская буква занимает 2 байта, латиница и цифры — 1. После форматирования получается 27 строк, а размер такой:
| Вариант | Размер |
|---|---|
| Сжатый | 362 байт |
| Табуляция | 478 байт |
| 2 пробела | 550 байт |
| 4 пробела | 694 байт |
Табуляция даёт самый компактный отформатированный JSON: каждый уровень стоит один байт. Для файлов, которые читают и правят люди, удобство обычно важнее лишних байтов; JSON, который массово передаётся или хранится, лучше сжимать.
Ограничения и советы
- Большие файлы: документ на 1 МБ проверяется и форматируется примерно за секунду на обычном ноутбуке, длинный результат прокручивается плавно. Для файлов в десятки мегабайт удобнее консольная утилита jq.
- JSON Lines (NDJSON) — это по одному JSON-значению на строку, а не единый документ. Вставляйте по одной строке или оберните строки в
[ ], разделив их запятыми. - JSON5 и «JSON с комментариями» из некоторых конфигов допускают комментарии и висячие запятые. Стандартный JSON — нет, поэтому здесь это ошибки.
- Показывается только первая ошибка. Исправьте её — и следующая, если есть, появится сразу.
- Чтобы сменить регистр ключей, воспользуйтесь инструментом изменения регистра текста, а длину строк в символах можно узнать подсчётом символов.
JSON остаётся на вашем устройстве
Форматирование и проверка выполняются в браузере. В JSON часто лежат API-ключи, токены и данные клиентов — ничего из этого не загружается и не записывается в логи. Данные и не сохраняются: после перезагрузки страницы поле очищается.
Частые вопросы
Отправляется ли мой JSON на сервер?
Нет. Страница форматирует и проверяет его с помощью JavaScript в вашем браузере, так что ей можно доверить рабочие данные, а после загрузки она работает даже без интернета.
Почему JSON считается некорректным, если в JavaScript он работает?
Литералы объектов JavaScript допускают то, чего нет в JSON: имена без кавычек, одинарные кавычки, висячие запятые, комментарии, undefined и функции. JSON — более строгий формат данных, чтобы любой язык читал его одинаково.
Что значит «JSON неожиданно закончился»?
Текст закончился, когда что-то ещё было открыто: обычно не хватает } или ] либо у строки нет закрывающей кавычки. Так же бывает, если текст обрезался при копировании.
Можно ли писать дробные числа через запятую?
Нет. В JSON десятичный разделитель — только точка: 12.50. Запятая разделяет значения, поэтому 12,50 в объекте даёт ошибку, а в массиве незаметно превращается в два числа.
Меняет ли сортировка ключей мои данные?
Нет. RFC 8259 определяет объект как неупорядоченный набор пар «имя — значение», так что порядок ключей ничего не значит. Массивы упорядочены, поэтому их элементы не сортируются.
Обновлено: 16 октября 2026 г.