Форматируйте и валидируйте JSON
Размер
0 KB
Строк
0
Статус
✓
Коротко об инструменте
Ответ API или тело вебхука приходят одной сплошной лентой без переносов: найти в ней потерянную запятую или лишнюю закрывающую скобку глазами почти невозможно. Страница разбирает вставленный текст штатным парсером браузера, печатает объект с отступами по уровням вложенности, а при поломке показывает сообщение с позицией символа, на котором разбор остановился. Ничего никуда не загружается — payload остаётся во вкладке. Смотрите также: переписать проверенный JSON в YAML-конфиг, посмотреть массив как наглядную таблицу, то же выравнивание для файла XML.
Вставьте строку и нажмите «Форматировать». Разбор останавливается на первом же нарушении и сообщает позицию символа, поэтому достаточно отсчитать её в исходном тексте. Чаще всего виноваты три вещи: запятая перед закрывающей скобкой, одинарные кавычки вместо двойных и обрезанный при копировании хвост ответа. Исправляйте по одной ошибке и форматируйте заново — следующая проблема всплывёт сразу.
Потому что это уже не JSON. Формат не допускает ни комментариев, ни висящих запятых, ни одинарных кавычек вокруг ключей и строк — всё это расширения JSON5 и JSONC, которые понимают редакторы вроде VS Code, но не стандартный парсер. Если такой текст пришёл из tsconfig или из ESLint-конфига, уберите комментарии вручную перед вставкой.
Файлы на несколько сотен килобайт разбираются и печатаются практически мгновенно. Дамп базы на десятки мегабайт вставлять в поле не стоит: строка, разобранный объект и отформатированный вывод одновременно висят в памяти вкладки, и браузер надолго замирает. Для таких объёмов удобнее консольная утилита, а сюда несите одну запись или одну ветку документа.
Отступы и переносы — это лишние байты в каждом запросе и в каждой строке лога. Перед отправкой тела POST-запроса, перед записью значения в переменную окружения или в поле конфигурации компактный вариант удобнее и короче. Машине читаемость не нужна, поэтому обычный порядок работы такой: развернуть, чтобы разобраться, свернуть, чтобы отправить.
Порядок ключей в объекте сохраняется в том виде, в каком они были в исходнике. А вот с числами есть тонкость: очень длинные целые — например, идентификаторы Telegram или снежинки — при разборе теряют точность, потому что в JavaScript все числа хранятся как double. Если такие значения важны, передавайте их строками.
Да, оба поля — обычные текстовые области, они работают в мобильном браузере, а кнопки нажимаются пальцем. Неудобство одно: длинные строки на маленьком экране приходится много прокручивать, а вставка большого ответа из мессенджера иногда обрезается системным буфером. Для разбора крупного payload комфортнее десктоп.
Никуда за пределы вкладки: разбор и печать делает скрипт самой страницы, сетевых запросов с содержимым поля она не отправляет. Поэтому ответ с адресами клиентов или номерами заказов можно приводить в читаемый вид, не выкладывая его в сторонний сервис. После перезагрузки поля пусты, так что забирайте результат сразу.
До: {"order":{"id":10428,"sum":4290,"items":["router","cable"]}} После: { "order": { "id": 10428, "sum": 4290, "items": [ "router", "cable" ] } } До: {"host": "db.local", "port": 5432,} После: Ошибка разбора: неожиданный символ } — уберите запятую после значения 5432
До: Отформатированный объект заказа из первого примера
После: {"order":{"id":10428,"sum":4290,"items":["router","cable"]}} Оценка и фидбек помогают понять, что улучшать дальше.