Форматировщик JSON
Форматируйте или минифицируйте JSON и точно видьте, где ломается неверный ввод.
Здесь появится вывод
Что делает этот форматировщик JSON
JSON (JavaScript Object Notation) — самый распространённый формат для передачи структурированных данных между программами: ответы API, файлы конфигурации, строки логов и многое другое. Он спроектирован компактным, что также делает его трудным для чтения, когда объекты вложены на несколько уровней или приходят одной строкой. Этот инструмент берёт любой JSON, который вы вставите, и переписывает его двумя способами: красиво отформатированным, с единообразными отступами, чтобы структура была видна с первого взгляда, или минифицированным, без каждого необязательного пробела, чтобы быть как можно меньше при передаче.
Он также проверяет данные во время форматирования. Поскольку он разбирает текст перед повторной сериализацией, некорректный JSON никогда не даёт обманчивого результата — вместо этого вы получаете точную строку и столбец, где разбор не удался, чтобы сразу перейти к проблеме.
Форматирование против минификации — когда что
Два режима служат противоположным целям, и большинство рабочих процессов используют оба на разных этапах:
- Форматируйте, когда читаете или отлаживаете: изучаете ответ API, сравниваете два payload или просматриваете файл конфигурации в pull request. Отступы превращают стену текста в удобное дерево.
- Минифицируйте, когда отправляете: встраиваете JSON в HTML, храните его в cookie или кэше, либо отправляете в теле запроса, где важен каждый байт. Минифицированный JSON — это ровно те же данные, только без пробелов.
Выбор отступа (2 пробела, 4 пробела или таб) влияет только на отформатированный вывод. Два пробела — самое распространённое соглашение в JavaScript и веб-инструментах; четыре пробела или табы подходят командам, которые их предпочитают. Что бы вы ни выбрали, результат остаётся корректным JSON — отступы носят чисто косметический характер.
Чтение ошибок проверки
Когда JSON некорректен, инструмент сообщает строку и столбец первой проблемы вместо расплывчатого сообщения «некорректно». Сообщения об ошибках движков различаются между браузерами и часто не содержат позиции, поэтому местоположение вычисляется независимо и указывает на разумную точку для начала. Исправьте первую ошибку и проверьте снова — один лишний символ часто порождает несколько кажущихся проблем.
Частые ошибки в JSON
JSON строже, чем объектные литералы JavaScript, на которые он похож. Вот ошибки, которые чаще всего сбивают с толку:
- Завершающие запятые: запятая после последнего элемента объекта или массива корректна в JavaScript, но не в JSON.
- Одинарные кавычки: строки и ключи JSON должны использовать двойные кавычки. 'значение' некорректно; "значение" правильно.
- Ключи без кавычек: каждый ключ объекта должен быть строкой в кавычках, поэтому { name: "x" } должно стать { "name": "x" }.
- Комментарии: в JSON нет синтаксиса комментариев. // и /* */ вызовут ошибку разбора.
- Особые числа: NaN, Infinity и -Infinity не являются корректными числами JSON.
- Неправильные кавычки: «типографские кавычки», вставленные из текстового редактора, выглядят как кавычки, но это другие символы, и они не будут разобраны.
Частые вопросы
- Отправляется ли мой JSON на сервер?
- Нет. Разбор, проверка и форматирование происходят целиком в вашем браузере с помощью JavaScript. Ничто из вставленного не загружается, не хранится и не записывается, поэтому это безопасно для конфиденциальных данных.
- Меняет ли форматирование мои данные?
- Нет. Форматирование и минификация только добавляют или убирают пробелы между токенами. Ключи, значения, числа и структура идентичны — меняется только оформление.
- Почему он переставляет или переформатирует мои числа?
- Инструмент разбирает JSON в настоящие значения и сериализует их обратно, поэтому числа нормализуются к канонической форме (например, 1e3 становится 1000). Значение не меняется; стандартизируется только его текстовое представление.
- Справится ли он с очень большими файлами JSON?
- Он справляется с большими данными, но поскольку всё выполняется в браузере, чрезвычайно большие файлы (десятки мегабайт) могут работать медленно или упереться в ограничения памяти в зависимости от вашего устройства.
- Сохраняет ли он порядок ключей объекта?
- Да. Порядок ключей сохраняется ровно таким, каким он есть в вашем вводе — инструмент не сортирует ключи.
- В чём разница между JSON и объектом JavaScript?
- JSON — это текстовый формат для обмена данными; объект JavaScript — это значение в памяти. JSON строже: он требует ключи и строки в двойных кавычках, запрещает завершающие запятые и комментарии и допускает только фиксированный набор типов значений (строки, числа, логические значения, null, массивы и объекты).
- Могу ли я форматировать JSON5 или JSONC (JSON с комментариями)?
- Нет. Этот инструмент проверяет строгий, стандартный JSON. JSON5 и JSONC добавляют комментарии и другие удобства, которые не входят в спецификацию JSON, поэтому они будут отмечены как ошибки.