Что на самом деле делает форматтер JSON
JSON, пришедший из API, строки лога или колонки базы, выглядит как одна сплошная строка. Он валиден — и нечитаем. Форматтер разбирает эту строку в настоящую структуру данных и печатает её обратно с одинаковыми отступами, по ключу на строку, чтобы была видна форма объекта, а не частокол скобок.
Вторая половина работы — проверка, и она полезнее. Если текст невалиден, парсер останавливается на первом непонятном символе и сообщает смещение в символах, что в файле на 400 строк не говорит ровно ничего. Этот инструмент переводит смещение в строку и столбец и называет ошибку, когда узнаёт её.
Как пользоваться
- Вставьте JSON в левое поле или перетащите туда файл
.json. - Выберите отступ — два пробела, четыре или таб. Результат появляется справа по мере ввода, нажимать ничего не нужно.
- Включите сортировку ключей, когда нужно сравнить два ответа с одинаковыми данными в разном порядке.
- Скопируйте результат или переключитесь на минификацию, чтобы убрать все пробелы перед отправкой.
Четыре ошибки, которые встречаются на практике
| Сообщение | Причина | Что делать |
| --- | --- | --- |
| Unexpected token } | Висящая запятая после последнего значения | Убрать её или включить мягкий разбор |
| Unexpected token ' | Одинарные кавычки, скопированные из JavaScript | В JSON только двойные кавычки, в том числе у ключей |
| Unexpected end of input | Данные обрезались при копировании | Проверить баланс скобок — что-то не закрыто |
| Bad control character | Настоящий перенос строки или таб внутри строки | Экранировать как \n или \t |
Почему всё считается локально
Большинство онлайн-форматтеров отправляет вставленное на сервер и форматирует там. Для учебного объекта это нормально, для всего остального — плохая привычка: в ответах API лежат имена клиентов, в токенах — доступы, а в строке лога обычно и то и другое. Вставить боевые данные в форму, которая их выгружает, — это раскрытие данных, каким бы коротким ни было хранение на той стороне.
Этот инструмент использует собственный JSON.parse браузера в уже открытой у вас
вкладке. Практическая выгода — скорость: нет загрузки, очереди и обращения к
серверу, поэтому результат обновляется на каждом нажатии клавиши. Плата — размер,
о чём и говорят ограничения выше.
Вопросы
Мой JSON куда-нибудь отправляется?+
Нет. Разбор, форматирование и проверка выполняются в этой вкладке браузера. Можно открыть панель сети и убедиться: пока вы печатаете, ни одного запроса со страницы не уходит. Побочный эффект — инструмент продолжает работать при отключённой сети.
Какого размера документ можно вставить?+
Без аккаунта — до 5 МБ, с бесплатным аккаунтом — до 25 МБ. Ограничение есть потому, что вкладка форматирует большой документ в основном потоке: сверх этого размера страница заметно подвиснет, а это хуже, чем честный отказ.
Понимает ли он комментарии и висящие запятые?+
Включите мягкий разбор. Он вырезает комментарии // и /* */ и убирает запятую перед закрывающей скобкой, после чего разбирает остаток как строгий JSON. Внутри строковых значений ничего не трогается, поэтому ссылка с // остаётся целой.
Чем форматирование отличается от проверки?+
Форматирование заново печатает валидный JSON с одинаковыми отступами. Проверка отвечает только на вопрос, разбирается ли текст, и где разбор остановился. Режим «только проверить» нужен для больших документов, когда ответ важнее красивого вывода.
Почему сортировка ключей меняет мой diff?+
Два ответа могут нести одни и те же данные с ключами в разном порядке, и построчный diff покажет изменённой каждую строку. Если отсортировать обе стороны по алфавиту, этот шум исчезает. Порядок элементов массива не трогается никогда: переставить массив — значит изменить данные, а не их вид.