Работает не только со строгим JSON
Сервис понимает JSON-like объекты: одинарные кавычки, ключи без кавычек, trailing comma, комментарии, undefined, Python True/False/None и похожие фрагменты.
О проекте
json-tools.ru сделан для ситуаций, где данные уже есть, но выглядят не так аккуратно, как в документации: кусок из логов, ответ API, объект из консоли браузера, Python repr, Odoo/debug-вывод, YAML или XML. Вставляете фрагмент — сервис определяет формат, нормализует структуру и показывает результат без отдельной ручной подготовки.
Сервис понимает JSON-like объекты: одинарные кавычки, ключи без кавычек, trailing comma, комментарии, undefined, Python True/False/None и похожие фрагменты.
Один и тот же фрагмент можно вывести как JSON, YAML, CSV, Python или XML. Для CSV объект и массив объектов приводятся к таблице, а вложенные поля разворачиваются через точку.
После форматирования видно тип входа, размер результата, количество ключей, объектов, массивов, строк и максимальную глубину. Результат можно смотреть как код или как дерево.
Добавлен публичный API v1: форматирование, определение типа, JSONPath-поиск, список форматов, лимиты и OpenAPI-схема для интеграций.
Улучшен рабочий экран: дерево результата с направляющими уровней, поиск с переходом по совпадениям, импорт файлов и более показательный стартовый пример.
Расширен мягкий парсинг: JSON-like object, одинарные кавычки, ключи без кавычек, trailing comma, комментарии, Python literals, tuple/set и некоторые Odoo repr.
Добавлены дополнительные форматы вывода и анализа: YAML, XML, CSV, статистика по структуре, сортировка ключей, ASCII-режим и строгая JSON-валидация.
Первая версия сервиса: форматирование и минификация JSON в браузере, копирование результата, базовая обработка ошибок и компактный интерфейс без лишней навигации.
Контакты
Пишите, если нашли ошибку в разборе данных, хотите предложить формат, уточнить поведение API или просто оставить обратную связь по интерфейсу.
Основной канал связи — email. Так удобнее приложить пример входных данных, ожидаемый результат и ссылку на документацию или API-запрос.
json-tools@yandex.ruФорма не отправляет данные на сервер. Она только собирает текст письма и открывает почтовый клиент на вашем устройстве.
Документация
Справка по входным форматам, настройкам вывода, поиску, дереву результата, импорту файлов и публичному API. Коротко, но с деталями, которые важны при реальной работе.
По умолчанию сервис сам выбирает парсер. Порядок такой: строгая JSON-валидация, если включена; XML-похожий ввод; обычный JSON; JS-like object; Python repr/dict/list; YAML; затем обычный текст.
Поддерживаются частые фрагменты из JavaScript-консоли и логов: ключи без кавычек, одинарные кавычки, trailing comma, // и /* */ комментарии, true/false/null и undefined.
Python dict/list/tuple/set приводятся к JSON-совместимым структурам. True, False и None превращаются в boolean/null. Некоторые объекты вида <Command.SET: 6> сохраняются как строки, а datetime.datetime, datetime.date и datetime.time с числовыми аргументами конвертируются в читаемые значения.
YAML принимается, если он распознан как объект или массив. XML разбирается отдельно и переводится в JSON-подобную структуру. Если ни один структурный формат не подошел, ввод считается обычной строкой.
Вывод выбирает формат результата: JSON, YAML, CSV, Python или XML. Отступ управляет итоговым кодом: компактно, 2 пробела, 4 пробела или Tab. Кнопка Минифицировать отправляет тот же ввод с отступом 0.
A-Z сортирует ключи объектов. ASCII экранирует не-ASCII символы там, где формат это поддерживает. Строгая валидация отключает мягкий разбор и требует валидный JSON с двойными кавычками и без лишнего синтаксиса.
CSV работает для объекта или массива объектов. Вложенные объекты разворачиваются в колонки через точку, например user.email. Массивы внутри ячеек остаются JSON-строками, чтобы структура не терялась.
Результат можно смотреть как код или дерево. Дерево полезно для вложенных API-ответов: оно показывает уровни, массивы, объекты и позволяет раскрывать только нужные ветки. Статистика считает размер, ключи, объекты, массивы, глубину и строки.
Поиск по результату работает как в редакторе: показывает количество совпадений и переходит к текущему. Можно искать обычный текст, включить regex или использовать JSONPath. Поддерживаются запросы вида $.users[*].email, $..email, индексы массивов и ключи в квадратных скобках.
Можно импортировать файл в исходный редактор, копировать и скачивать исходный текст или результат. Настройки редактора сохраняются локально: размер таба, отображение пробелов и табов, номера строк, перенос строк, активная строка, пары скобок, тема и ширина панелей.
Переключатель RU/EN в верхней панели меняет язык интерфейса, информационных страниц, SEO-метаданных и динамических сообщений редактора. Английская версия открывается через параметр ?lang=en, русская используется по умолчанию.
Нет. Сервис отправляет текст на обработку и возвращает результат, но не хранит пользовательские данные. Для защиты от тяжелых запросов действует лимит входного текста: 1000000 байт.
API v1 повторяет основную логику сайта и нужен для интеграций: скриптов, внутренних админок, CI-проверок, debug-панелей и сервисов, где нужно привести данные к читаемому виду без открытия браузера.
input.mode задает парсер: auto, json, js_like, python, yaml, xml или text. input.strict_json требует строгий JSON. output.format выбирает json, yaml, csv, python или xml. output.indent принимает число 0..8 или строку tab; 0 означает компактный вывод. Также доступны sort_keys, ensure_ascii, include.parsed_data и include.stats.
curl -X POST https://json-tools.ru/api/v1/format \
-H 'Content-Type: application/json' \
-d '{
"source": "{ user: '\''ivan'\'', active: true, }",
"input": { "mode": "auto", "strict_json": false },
"output": { "format": "json", "indent": 2 },
"include": { "stats": true }
}'
Индекс API доступен по /api/, OpenAPI-схема — по /api/openapi.json, интерактивная документация FastAPI — по /api/docs. Текущие лимиты можно получить через GET /api/v1/limits.
Ошибки публичного API возвращаются как application/problem+json. Слишком большой ввод дает HTTP 413, ошибка разбора или некорректный JSONPath — HTTP 422. Лимит входного текста: 1000000 байт, максимум результатов поиска: 500.