JSON Форматтер и Валидатор Pro

Форматируйте, проверяйте, запрашивайте, сравнивайте и преобразуйте JSON — полностью в вашем браузере

Входной JSON

Отступ

Отформатированный вывод

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

JSON Форматтер, Валидатор, JSONPath, Diff и Schema — onDevTools

Форматируйте, проверяйте, запрашивайте, сравнивайте и преобразуйте JSON полностью в вашем браузере. Строгий парсер RFC 8259 плюс режим JSONC, валидация JSON Schema Draft 2020-12, JSONPath по RFC 9535, глубокий diff с JSON Merge Patch и преобразования уплощения / восстановления / удаления null — без загрузки, без отслеживания.

Возможности

  • Красивая печать и минификация JSON с настраиваемым отступом (2, 4, 8 пробелов) и опциональной алфавитной сортировкой ключей
  • Строгий парсер RFC 8259 / ECMA-404 плюс мягкий режим JSONC, принимающий комментарии // и /* */ и завершающие запятые
  • Интерактивное сворачиваемое древовидное представление с полнотекстовым поиском, развёртыванием/сворачиванием всего и копированием значения или пути JSON Pointer для каждого узла
  • Валидатор JSON Schema (Draft 2020-12), сообщающий о нарушениях type, required, enum, pattern, min/max, oneOf/anyOf/allOf, additionalProperties и элементов массива с полными путями экземпляра
  • Движок запросов JSONPath (RFC 9535), поддерживающий подстановочные знаки, рекурсивный спуск (..), срезы массивов и выражения фильтра вида $[?(@.price > 10)]
  • Глубокий side-by-side diff с цветовой маркировкой добавленных / удалённых / изменённых / неизменённых сегментов плюс копирование или скачивание результата
  • Конвейер преобразований: уплощение в точечную нотацию, обратное восстановление, удаление null, удаление пустых строк/массивов/объектов и объединение операций в цепочку
  • Панель статистики JSON: всего элементов, количество объектов/массивов, разбивка по типам и максимальная глубина вложенности
  • Встроенное сообщение об ошибках со строкой и столбцом от парсера плюс предложения включить режим JSONC, когда сбой выглядит как проблема с комментарием или завершающей запятой
  • Копирование или скачивание в один клик для отформатированного, минифицированного, схемы или diff-вывода
  • Полностью работает на стороне клиента — JSON, схемы и входные данные diff никогда не покидают ваш браузер

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

  1. Вставьте или перетащите ваш JSON в панель Входной JSON — авто-форматирование запускается по мере набора, либо нажмите Форматировать для явного запуска.
  2. Если парсинг не удаётся на конфигурационном файле или настройках VS Code, переключите тумблер JSONC, чтобы разрешить комментарии и завершающие запятые, и запустите снова.
  3. Переключитесь на представление Дерево, чтобы исследовать глубоко вложенные структуры; используйте поле поиска для подсветки совпадающих ключей или значений и копирования пути или значения любого узла.
  4. Откройте вкладку Валидация схемы, вставьте документ JSON Schema и нажмите Проверить — каждое нарушение показывает не прошедшее ключевое слово и путь JSON Pointer к ошибочному значению.
  5. Используйте вкладку Сравнение diff, чтобы сравнить два JSON-документа и скопировать патч в виде JSON Merge Patch, готового к применению где угодно.
  6. Используйте вкладку Запрос JSONPath, чтобы извлекать или фильтровать части документа выражениями вида $.store.book[?(@.price < 10)].title.
  7. Используйте вкладку Преобразования для уплощения, восстановления или удаления null; объединяйте преобразования в цепочку, повторно запуская их на обновлённом вводе, затем копируйте или скачивайте результат.

Советы и лучшие практики

  • Включайте JSONC, как только видите «Unexpected token /» или «Unexpected token ,» — это почти всегда конфигурационный файл с комментариями или завершающей запятой.
  • Используйте Сортировать ключи перед коммитом конфигурационных файлов JSON, чтобы держать diff'ы PR минимальными.
  • Скопируйте путь JSON Pointer из представления Дерево, чтобы вставить глубокую ссылку на конкретный узел в баг-репорт или описание PR.
  • Если 64-битный ID отображается как 1234567890123456800, ваш продюсер выдаёт его как число — переключите API на отправку ID в виде строк.
  • Объедините в цепочку Удалить null → Минифицировать → Копировать, чтобы получить минимально возможную полезную нагрузку для тел HTTP-запросов.

Вопросы и ответы

Вы сохраняете мой JSON?

Нет. Парсинг, валидация, проверка схем, сравнение и преобразования — всё выполняется в вашем браузере с помощью локального JavaScript и API Web Crypto / DOM — ничего не загружается. Это делает безопасной вставку API-ответов, конфигурационных файлов или конфиденциальных данных из продакшен-систем.

Какой спецификации JSON следует парсер?

Строгий режим следует RFC 8259 / ECMA-404 — стандартам IETF и ECMA для JSON. Режим JSONC (переключатель JSONC) добавляет расширения с комментариями и завершающими запятыми, используемые в settings.json VS Code, tsconfig.json и подобных конфигурационных файлах. JSON5 (например, ключи без кавычек, одинарные кавычки, шестнадцатеричные числа) сейчас не поддерживается — используйте парсер JSON5, если ваш ввод требует таких форм.

Что поддерживает валидатор JSON Schema?

Валидация выполняется по JSON Schema Draft 2020-12 с полным покрытием type, required, enum, pattern, format, minimum/maximum, minLength/maxLength, minItems/maxItems, additionalProperties, items, prefixItems, oneOf/anyOf/allOf, $ref и условных if/then/else. Каждое нарушение сообщает не прошедшее ключевое слово плюс путь JSON Pointer к неправильному значению, чтобы вы могли точно определить глубоко вложенные проблемы, не сканируя весь экземпляр.

Какие выражения JSONPath поддерживаются?

Движок запросов реализует поверхность RFC 9535: корень ($), дочерний сегмент ($.key, $['key']), индекс и срез массива ([0], [0:3]), подстановочные знаки ([*]), рекурсивный спуск (..) и выражения фильтра со сравнением, регулярными выражениями и логическими операторами (например, $[?(@.price > 10 && @.in_stock == true)]). Несколько результатов возвращаются в виде массива; значения извлекаются в порядке следования в документе.

В чём разница между JSONC и JSON5?

JSONC — это обычный JSON плюс строчные комментарии //, блочные комментарии /* */ и завершающие запятые — популярный формат для конфигурационных файлов, редактируемых человеком. JSON5 — это надмножество, которое дополнительно допускает ключи без кавычек, строки в одинарных кавычках, шестнадцатеричные числа/числа с ведущей точкой и NaN/Infinity. Этот инструмент поддерживает JSONC; для ввода JSON5 потребуется сначала преобразовать его или использовать парсер JSON5.

Могу ли я форматировать очень большие JSON-файлы?

Да, но древовидное представление и движок JSONPath масштабируются примерно линейно с количеством узлов, поэтому при объёме выше ~1 МБ / ~50 000 узлов интерфейс становится заметно медленнее. Для больших данных используйте представление Обычный вместо Дерево, запустите сначала преобразование Минифицировать, если вам нужен только компактный вывод, или разбейте документ по верхнеуровневым ключам. Потоковая обработка и JSON Lines (.jsonl) выходят за рамки — для них используйте CLI вроде jq.

Как это сравнивается с jq, jsonlint или встроенным форматтером VS Code?

jq непревзойдён для скриптовых конвейеров и потоковой обработки, а jsonlint покрывает строгую валидацию. Преимущество этого инструмента в том, что он делает всё в одном месте — форматирование + валидация + проверка по схеме + JSONPath + глубокий diff + преобразования — не покидая браузер. Встроенный форматтер VS Code справляется с красивой печатью, но не с путями ошибок с учётом схемы, JSONPath или diff/merge.

Почему парсер говорит «Unexpected token» на конфигурационном файле?

Парсер по умолчанию строгий, поэтому комментарии //, блоки /* */ и завершающие запятые выдают ошибку, указывающую на проблемный символ. Панель состояния автоматически предложит включить режим JSONC, когда шаблон сбоя соответствует одной из этих особенностей. Если сообщение указывает на полностью закавыченную строку, дважды проверьте неэкранированные обратные слеши или управляющие символы — это другие распространённые виновники.

Могу ли я настроить отступ и порядок ключей?

Да. Выберите 2, 4 или 8 пробелов в элементе управления Отступ и переключите Сортировать ключи, чтобы выводить ключи объекта в алфавитном порядке — полезно для стабильных diff'ов и воспроизводимых конфигурационных файлов. Вывод всегда в UTF-8 со строками, разделёнными переводом строки (без BOM); форматтер никогда не переупорядочивает элементы массива, потому что это изменило бы семантику.

Какие операции преобразования доступны?

Уплощение преобразует {a:{b:1}} в {"a.b":1} для инструментов, ожидающих ключи в точечной нотации (переменные окружения, флаги функций). Восстановление обращает это. Удалить null рекурсивно удаляет все свойства со значением null, Удалить пустые также убирает пустые строки, [] и {}, а Минифицировать выдаёт однострочный вывод. Преобразования применяются к текущему вводу, поэтому вы можете объединять их в цепочку для построения конвейеров.

Поддерживает ли инструмент извлечение путей JSON Pointer?

Да. В представлении Дерево при наведении на любой узел показывается его путь JSON Pointer (RFC 6901) — например, /store/book/0/author — который можно скопировать одним кликом. JSON Pointer — это та же нотация, которую используют результаты схемы и diff для идентификации местоположений, поэтому вы можете вставить путь из одной панели в другую, чтобы перейти к тому же значению.

Могу ли я поделиться отформатированным результатом с коллегой?

Самый быстрый способ — вставить JSON на его машине, поскольку нет серверного состояния, на которое можно было бы поделиться ссылкой. Если нужна передача в стиле постоянной ссылки, используйте Gist или сервис вставки с минифицированным выводом. В любом случае избегайте передачи токенов, секретов или PII даже на стороне клиента, потому что буфер обмена или консоль принимающего коллеги могут их сохранить.

Корректно ли он обрабатывает Unicode и большие числа?

Весь ввод обрабатывается как UTF-8, и суррогатные пары (эмодзи, символы CJK) проходят туда и обратно без экранирования. Числа выше Number.MAX_SAFE_INTEGER (2^53 − 1) теряют точность, потому что лежащий в основе парсер использует double-числа IEEE-754 — это особенность спецификации JSON, а не ограничение инструмента. Если вы передаёте 64-битные ID, отправляйте их как строки, что и делают большинство API.