Как это работает
Страница читает ваш текст строгим парсером JSON по RFC 8259, стандарту JSON. Он останавливается на первом символе, который не может быть JSON, и сообщает, где это и почему: лишняя запятая в конце, одинарная кавычка, пропущенное двоеточие или запятая, комментарий, число, недопустимое в JSON.
Корректный JSON записывается обратно с выбранным отступом или, при сжатии, без всех необязательных пробелов. Числа и строки копируются в точности как вы их написали, поэтому длинный идентификатор вроде 12345678901234567890 сохраняет все цифры, а escape-последовательность вроде \u00e9 остаётся как есть. Сортировка упорядочивает ключи каждого объекта по кодовым точкам их символов; ключи, которые встречаются дважды, сохраняют обе копии по порядку.
Всё выполняется в вашем браузере. Файлы до нескольких мегабайт форматируются мгновенно; если данных больше 1 МБ, страница ждёт, пока вы нажмёте «Форматировать», а не переформатирует их при каждом нажатии клавиши.
Пример
В этих данных после последнего элемента стоит лишняя запятая:
{
"name": "web-1",
"ports": [80, 443,]
}Валидатор останавливается на строке 3, столбце 20, на этой запятой, и сообщает, что в JSON нельзя ставить запятую после последнего элемента. Удалите её, и текст отформатируется, как показано, либо сожмётся в одну строку из 33 символов.
{
"name": "web-1",
"ports": [
80,
443
]
}Вопросы
Почему мой JSON не проходит из-за запятой в конце?
Потому что JSON допускает запятую только между двумя элементами. JavaScript, Python и многие форматы конфигурации принимают запятую после последнего элемента списка или объекта; JSON — нет, и строгие парсеры, такие как JSON.parse, jq и большинство API, отклоняют весь документ. Удалите запятую, на которую указывает ошибка.
Бывают ли в JSON комментарии?
Нет. В JSON нет синтаксиса комментариев. Некоторые программы вместо него читают JSONC или JSON5, где комментарии разрешены (настройки VS Code и tsconfig.json — это JSONC), но строгий парсер JSON их отклоняет. Удалите комментарии или оставьте заметку в обычном поле, например "_comment".
Меняет ли форматирование мои числа?
Здесь нет. JSON.parse в JavaScript превращает каждое число в 64-битное значение с плавающей запятой, поэтому 12345678901234567890 возвращается как 12345678901234567000, а 1.10 — как 1.1. Этот форматтер числа не преобразует: числа, строки и escape-последовательности записываются обратно в точности как были. Меняются только пробелы и переводы строк между ними.
Чем форматирование отличается от сжатия?
Форматирование добавляет переводы строк и отступы, чтобы человеку было легче читать структуру. Сжатие убирает все пробелы и переводы строк, которые JSON не нужны, из-за чего файл занимает меньше места и быстрее передаётся. В обоих случаях данные одни и те же; программа читает их одинаково.
Отправляется ли куда-нибудь вставленный JSON?
Нет. Его разбирает и форматирует скрипт этой страницы в вашем браузере, и он никогда не покидает ваше устройство, поэтому конфигурации и ответы API с ключами или персональными данными вставлять безопасно. После загрузки страница работает и без интернета.