Format, explore and convert JSON safely.
Проверяйте, изучайте и преобразуйте JSON прямо в браузере: точное место ошибки, сворачиваемое дерево, которое не тормозит на огромных файлах, запросы JSONPath и экспорт в CSV, XML, YAML, JSON Schema или TypeScript.
Вставьте или перетащите JSON слева, чтобы начать.
Как это работает
Принесите JSON
Вставьте, перетащите файл или примите его от другого инструмента. Ничего не отправляется, и ничего тяжёлого не запускается без вашей команды.
Прочтите вердикт
Корректен — или точная строка и столбец, где всё ломается, плюс повторяющиеся ключи и числа, которые JavaScript не удержит.
Изучите
Сворачивайте дерево, фильтруйте по ключу или значению, запускайте выражение JSONPath по всему документу.
Забирайте
CSV, XML, YAML, JSON Lines, JSON Schema, типы TypeScript или Go — или отправьте сразу в другой инструмент.
Настоящий анализатор, а не JSON.parse
Ошибка приходит со строкой, столбцом и подсвеченной строкой на полях, а не со смещением в символах, которое пришлось бы отсчитывать вручную.
64-битные идентификаторы выживают
Длинные числовые идентификаторы печатаются цифра в цифру. Любой форматировщик на основе JSON.parse молча округляет их до ближайшего числа с плавающей точкой.
Починка в один клик
Комментарии, лишние запятые, одинарные кавычки, ключи без кавычек, питоновские True/False/None и заблудившаяся метка BOM превращаются в строгий JSON.
Запросы JSONPath
Подстановки, рекурсивный обход, срезы и фильтры вроде [?(@.price > 10)], разбираемые вручную: ничто из набранного никогда не выполняется.
Типы из настоящих данных
JSON Schema, интерфейсы TypeScript или структуры Go, выведенные по всем записям, поэтому изредка отсутствующие поля становятся необязательными.
Честное уплощение
Вы выбираете разделитель пути и судьбу вложенных массивов. Пустые объекты сохраняют свой столбец, а не исчезают из выгрузки.
Структурное сравнение
Два документа сравниваются путь за путём, поэтому другой порядок ключей не превращается в тысячу изменений.
Большие файлы остаются рабочими
Проверка уходит в веб-воркер, дерево монтирует только видимые строки, а история хранит изменившиеся символы, а не копию документа.
Format, explore and convert JSON safely.
Ответы API несут токены, данные клиентов и внутренние идентификаторы. JSONFlow не отправляет их никуда: анализатор, дерево, запросы и выгрузки работают внутри этой вкладки, поэтому вставить сюда боевой ответ так же безопасно, как открыть его в своём редакторе.
Всё работает в этой вкладке
Анализатор, сворачиваемое дерево, движок JSONPath и все выгрузки — это обычный JavaScript, исполняемый на вашем устройстве. Нет шага загрузки, нет сервера и нет запроса, уносящего ваши данные: отключите сеть после загрузки страницы, и инструмент продолжит работать.
Полноценный верстак для работы с JSON.
Найти ту самую запятую, ломающую конфиг; превратить ответ API в таблицу; получить интерфейс TypeScript для эндпоинта, который никто не задокументировал; проверить, действительно ли различаются две версии одной посылки; и разобрать логи, где JSON приехал завёрнутым в строку с кавычками.
Посылка JSON почти никогда не анонимна: там токены доступа, адреса почты, номера заказов и внутренние адреса. Вставить это в размещённый на чужом сервере форматировщик — значит отдать всё целиком. Здесь данные не покидают вкладку, поэтому нечего логировать, кешировать и утекать.
Частые вопросы
QМой JSON уходит на какой-нибудь сервер?+
Нет. Разбор, проверка, дерево, запросы и все выгрузки выполняются внутри этой вкладки браузера. После загрузки страницы можно отключить сеть — всё продолжит работать.
QФайлы какого размера он реально тянет?+
На обычном ноутбуке документ в 1,5 МБ со 180 000 узлов разбирается заметно быстрее десятой доли секунды, а файлы в несколько десятков мегабайт по-прежнему открываются: проверка уходит в веб-воркер, а дерево рисует только видимые строки. Ограничивает память, а не инструмент: примерно после 100 МБ вкладке браузера тяжело с любой программой. Всё, что больше 2 МБ, придерживается за кнопкой вместо автоматической загрузки, поэтому крупный файл никогда не подвешивает страницу при появлении.
QПочему в других форматировщиках мои длинные идентификаторы меняются?+
JSON.parse превращает каждое число в 64-битное с плавающей точкой, а такое не может точно представить целые больше 2^53: идентификатор Twitter, Discord или Snowflake теряет последние цифры. JSONFlow сохраняет исходные цифры из текста и предупреждает, когда число попадает в этот диапазон.
QВ моём файле есть комментарии и лишние запятые. Это проблема?+
Нет. Если строгий разбор не удался, автоматически запускается терпимый проход, и при успехе появляется кнопка «Починить». Она справляется с комментариями, лишними запятыми, одинарными кавычками, ключами без кавычек, питоновскими True/False/None, NaN и Infinity и переписывает документ в строгий JSON.
QКак устроено уплощение JSON в CSV?+
Каждый элемент массива верхнего уровня становится строкой, а вложенные ключи — столбцами через точку, вроде user.address.city. Вы выбираете разделитель и судьбу вложенных массивов: по столбцу на элемент, как есть в JSON или объединённые. В обратную сторону заголовки читаются буквально: столбец first_name остаётся first_name, если вы явно не попросили вложенность.
QЧто можно писать в строке запроса?+
Подмножество JSONPath: $.users[0].name, подстановка через [*], рекурсивный обход через .., срезы вида [0:5], отрицательные индексы и фильтры вроде [?(@.price > 10)] или [?(@.name =~ ^a)]. Выражения разбираются вручную и никогда не исполняются как код.