IZN Tools

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

Форматировать, проверить и минифицировать в одном окне, с подсветкой ошибки.

ВВОД
—
РЕЗУЛЬТАТ

Отформатированный результат появится здесь по мере ввода.

Ожидание ввода
Разобрано на вашем устройстве

Что на самом деле делает форматтер JSON

JSON, пришедший из API, строки лога или колонки базы, выглядит как одна сплошная строка. Он валиден — и нечитаем. Форматтер разбирает эту строку в настоящую структуру данных и печатает её обратно с одинаковыми отступами, по ключу на строку, чтобы была видна форма объекта, а не частокол скобок.

Вторая половина работы — проверка, и она полезнее. Если текст невалиден, парсер останавливается на первом непонятном символе и сообщает смещение в символах, что в файле на 400 строк не говорит ровно ничего. Этот инструмент переводит смещение в строку и столбец и называет ошибку, когда узнаёт её.

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

  1. Вставьте JSON в левое поле или перетащите туда файл .json.
  2. Выберите отступ — два пробела, четыре или таб. Результат появляется справа по мере ввода, нажимать ничего не нужно.
  3. Включите сортировку ключей, когда нужно сравнить два ответа с одинаковыми данными в разном порядке.
  4. Скопируйте результат или переключитесь на минификацию, чтобы убрать все пробелы перед отправкой.
Невалидные данные: в строке состояния указаны строка и столбец, где разбор остановился.Невалидные данные: в строке состояния указаны строка и столбец, где разбор остановился.
Невалидные данные: в строке состояния указаны строка и столбец, где разбор остановился.

Четыре ошибки, которые встречаются на практике

| Сообщение | Причина | Что делать | | --- | --- | --- | | 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 покажет изменённой каждую строку. Если отсортировать обе стороны по алфавиту, этот шум исчезает. Порядок элементов массива не трогается никогда: переставить массив — значит изменить данные, а не их вид.