Форматтер JSON
Делайте JSON читаемым, проверяйте и сжимайте его прямо в браузере. Вставьте данные, выберите стиль отступа и мгновенно получите чистый, удобочитаемый результат — ничего не загружается.
0 строк · 0 символов
Отступ
Как пользоваться Форматтер JSON
- 1
Вставьте JSON
Вставьте минифицированный, неаккуратный или уже отформатированный JSON в панель ввода.
- 2
Выберите отступ
Выберите 2 пробела, 4 пробела или табуляцию, чтобы управлять тем, как формируется отступ в красиво оформленном выводе.
- 3
Отформатируйте или минифицируйте
Нажмите «Форматировать», чтобы красиво вывести и проверить JSON, или «Минифицировать», чтобы сжать его в одну строку.
- 4
Скопируйте результат
Используйте кнопку «Копировать», чтобы получить отформатированный или минифицированный вывод для вашего проекта.
Работа с JSON: форматирование, валидация и ошибки, которые кусаются
Что такое JSON на самом деле
JSON (JavaScript Object Notation) — это текстовый формат обмена данными, ставший способом по умолчанию, которым сервисы общаются друг с другом по HTTP. Несмотря на название, он не зависит от языка: парсеры существуют для каждого основного языка, а формат передачи — это просто текст UTF-8. Документ строится ровно из шести типов значений — объектов (неупорядоченных наборов ключ/значение), массивов (упорядоченных списков), строк, чисел, булевых значений true и false и null. Всё, что вы сериализуете, от ответа API до файла конфигурации, раскладывается на эти шесть.
Два правила постоянно сбивают людей с толку. Во-первых, ключи в объекте должны быть строками в двойных кавычках — голые идентификаторы не допускаются, в отличие от объектных литералов JavaScript. Во-вторых, в JSON нет различия между целым числом и числом с плавающей точкой и нет синтаксиса комментариев. Число — это просто число, а любые человеческие пометки, которые вы хотите оставить, должны жить внутри строкового значения или быть удалены перед разбором.
Форматирование против минификации
Это два взгляда на одни и те же данные. Форматирование (его также называют украшением или красивым выводом) вставляет переносы строк и отступы, чтобы вложенность была видна с первого взгляда, — это то, что вам нужно при чтении нагрузки, сравнении двух ответов в системе контроля версий или вставке примера в документацию. Минификация делает обратное: она убирает каждый байт незначащих пробельных символов, чтобы получить одну компактную строку, и это то, что вы передаёте по сети, где каждый килобайт стоит задержки и пропускной способности.
Оба направления не теряют сами данные. Пробельные символы между лексемами в JSON никогда не значимы, поэтому свёртывание объекта из 40 строк в одну строку и его обратное развёртывание дают идентичные разобранные значения. Меняется лишь число байтов и читаемость, и именно поэтому этот инструмент предлагает обе кнопки, а не навязывает один стиль.
Синтаксические ошибки, на которые вы действительно наткнётесь
Самая частая ошибка — концевая запятая, запятая после последнего элемента массива или последней пары объекта. JavaScript её терпит; JSON запрещает, поэтому список, оканчивающийся запятой перед закрывающей скобкой, не разберётся. Сразу за ней идут одинарные кавычки вместо двойных (строки JSON должны использовать двойные кавычки) и ключи без кавычек, скопированные прямо из исходного кода JavaScript.
Другие частые виновники: случайный комментарий (// или блочного стиля), который допустим в JSONC и JSON5, но не в строгом JSON; значения вроде NaN, Infinity или undefined, которых попросту нет в спецификации; и неэкранированные управляющие символы, такие как буквальная табуляция или перенос строки внутри строки. Когда валидатор указывает на строку, просмотрите символ-другой перед выделенной позицией — парсер часто замечает проблему только на следующей лексеме после настоящей ошибки.
Выбор стиля отступов
Два пробела — фактический стандарт для JSON в вебе и значение по умолчанию, выдаваемое большинством инструментов, включая многие линтеры и форматтеры. Четыре пробела читаются просторнее для глубоко вложенных структур, а табуляции позволяют каждому разработчику выбрать собственную ширину на экране, сохраняя файл байт в байт идентичным. Правильный ответ — тот, который уже использует ваш репозиторий; смешивание стилей в одном проекте порождает шумные, бессмысленные различия.
Отступы чисто косметические и отбрасываются в тот момент, когда документ разбирается, поэтому они никогда не влияют на правильность. Выберите ширину, применяйте её последовательно и позвольте форматтеру нормализовать всё, что вставлено из другого источника.
Порядок ключей и целостность данных
Этот форматтер заново расставляет отступы и пробелы в вашем документе, но не переупорядочивает ключи и не изменяет ни одного значения. Это важно, потому что, хотя спецификация JSON определяет объекты как неупорядоченные, практически каждый реальный парсер сохраняет порядок вставки, и потребители ниже по цепочке — снимочные тесты, подписанные нагрузки, люди-рецензенты, читающие различие, — часто на него полагаются. Инструмент, который молча сортировал бы ключи, мог бы сломать проверку подписи или похоронить однострочное изменение в стострочной перетасовке.
Если вам действительно нужен канонический, отсортированный вывод для стабильных различий или хеширования содержимого, это намеренная, отдельная операция, на которую вы должны осознанно согласиться, а не побочный эффект красивого вывода. Разделение форматирования и переупорядочивания означает, что вы всегда точно знаете, что изменилось.
Числа, точность и Unicode
Числа JSON десятичные и не имеют объявленного предела размера, но движок JavaScript, который разбирает их в вашем браузере, хранит их как 64-битные числа с плавающей точкой. Это значит, что целые числа больше примерно девяти квадриллионов (потолок безопасного целого) могут терять точность при путешествии туда и обратно, и поэтому большие идентификаторы, значения snowflake и денежные суммы часто передаются как строки, а не как сырые числа. Если важна точность, заключите значение в кавычки.
Строки полностью поддерживают Unicode. Вы можете записывать символы напрямую как UTF-8 или как escape-последовательности с обратной косой чертой и u, и обе формы разбираются в одни и те же кодовые точки. Поскольку формат — это текст UTF-8 от начала до конца, буквы с диакритическими знаками, нелатинские письменности и эмодзи переживают форматирование и минификацию нетронутыми.
Всё остаётся в вашем браузере
Весь разбор, валидация и повторная сериализация выполняются локально на JavaScript. Ничто из того, что вы вставляете, не загружается, не записывается в журналы и не сохраняется на сервере, поэтому безопасно форматировать ответы API, содержащие токены доступа, внутренние идентификаторы или данные клиентов. Практический потолок — это память вашего устройства, а не какое-либо ограничение на загрузку, поэтому большие выгрузки нормально форматируются на машине с разумными характеристиками.
Полезная привычка: когда интеграция ведёт себя неправильно, сначала вставьте сырой ответ сюда. Подтверждение того, что нагрузка является корректным JSON, прежде чем винить свой код, за секунды отделяет ошибку сериализации от ошибки разбора, и делает это, нигде не выдавая нагрузку.
Часто задаваемые вопросы
В чём разница между форматированием и минификацией?
Проверяет ли форматировщик мой JSON?
Какие параметры отступа доступны?
Меняет ли он порядок ключей или сами данные?
Загружается ли мой JSON и справляется ли он с большими файлами?
Похожие инструменты
Продолжайте работу с этими удобными инструментами