T

Text Machine

Мощные текстовые инструменты прямо в браузере

Форматтер JSON

Делайте JSON читаемым, проверяйте и сжимайте его прямо в браузере. Вставьте данные, выберите стиль отступа и мгновенно получите чистый, удобочитаемый результат — ничего не загружается.

Входной JSON

0 строк · 0 символов

Отступ

Как пользоваться Форматтер JSON

  1. 1

    Вставьте JSON

    Вставьте минифицированный, неаккуратный или уже отформатированный JSON в панель ввода.

  2. 2

    Выберите отступ

    Выберите 2 пробела, 4 пробела или табуляцию, чтобы управлять тем, как формируется отступ в красиво оформленном выводе.

  3. 3

    Отформатируйте или минифицируйте

    Нажмите «Форматировать», чтобы красиво вывести и проверить JSON, или «Минифицировать», чтобы сжать его в одну строку.

  4. 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?
Да. Если JSON недопустим, он показывает ошибку с указанием места проблемы вместо вывода результата, чтобы вы могли быстро найти пропущенную запятую, скобку или кавычку.
Какие параметры отступа доступны?
Можно форматировать с отступом в 2 пробела, 4 пробела или символы табуляции, чтобы соответствовать стилю кода вашей команды или проекта.
Меняет ли он порядок ключей или сами данные?
Нет. Он только заново формирует отступы или сжимает существующую структуру. Порядок ключей и все значения сохраняются в точности так, как они представлены в вашем вводе.
Загружается ли мой JSON и справляется ли он с большими файлами?
Ничего не загружается. Форматировщик полностью работает в вашем браузере, поэтому он безопасен для конфиденциальных данных, и он может обрабатывать большие документы, ограниченные только доступной памятью вашего устройства.

Похожие инструменты

Продолжайте работу с этими удобными инструментами

Компрессор HTML

Конвертер HTML в Текст

Тестер регулярных выражений

Декодер JWT

Генератор CSS-градиентов

Генератор теней CSS