json-tools .ru
Формат
Исходный текст Вставьте JSON / YAML / dict / object / XML
Результат Тип пока не определён
Статистика появится после форматирования

О проекте

Один рабочий экран для JSON и данных вокруг него.

json-tools.ru сделан для ситуаций, где данные уже есть, но выглядят не так аккуратно, как в документации: кусок из логов, ответ API, объект из консоли браузера, Python repr, Odoo/debug-вывод, YAML или XML. Вставляете фрагмент — сервис определяет формат, нормализует структуру и показывает результат без отдельной ручной подготовки.

Работает не только со строгим JSON

Сервис понимает JSON-like объекты: одинарные кавычки, ключи без кавычек, trailing comma, комментарии, undefined, Python True/False/None и похожие фрагменты.

Конвертирует между рабочими форматами

Один и тот же фрагмент можно вывести как JSON, YAML, CSV, Python или XML. Для CSV объект и массив объектов приводятся к таблице, а вложенные поля разворачиваются через точку.

Помогает разобраться в структуре

После форматирования видно тип входа, размер результата, количество ключей, объектов, массивов, строк и максимальную глубину. Результат можно смотреть как код или как дерево.

История изменений

v1.4

Добавлен публичный API v1: форматирование, определение типа, JSONPath-поиск, список форматов, лимиты и OpenAPI-схема для интеграций.

v1.3

Улучшен рабочий экран: дерево результата с направляющими уровней, поиск с переходом по совпадениям, импорт файлов и более показательный стартовый пример.

v1.2

Расширен мягкий парсинг: JSON-like object, одинарные кавычки, ключи без кавычек, trailing comma, комментарии, Python literals, tuple/set и некоторые Odoo repr.

v1.1

Добавлены дополнительные форматы вывода и анализа: YAML, XML, CSV, статистика по структуре, сортировка ключей, ASCII-режим и строгая JSON-валидация.

v1.0

Первая версия сервиса: форматирование и минификация JSON в браузере, копирование результата, базовая обработка ошибок и компактный интерфейс без лишней навигации.

Контакты

Связь по сервису и API

Пишите, если нашли ошибку в разборе данных, хотите предложить формат, уточнить поведение API или просто оставить обратную связь по интерфейсу.

Почта сервиса

Основной канал связи — email. Так удобнее приложить пример входных данных, ожидаемый результат и ссылку на документацию или API-запрос.

json-tools@yandex.ru

Что лучше сразу указать

Формат входных данных: JSON, JS-like, Python, YAML, XML или CSV. Что выбрано в настройках: вывод, отступ, A-Z, ASCII, строгая валидация. Что ожидалось получить и что получилось на самом деле.

Быстрое письмо

Форма не отправляет данные на сервер. Она только собирает текст письма и открывает почтовый клиент на вашем устройстве.

Документация

Как работать с сайтом и API

Справка по входным форматам, настройкам вывода, поиску, дереву результата, импорту файлов и публичному API. Коротко, но с деталями, которые важны при реальной работе.

Входные данные

Автоопределение

По умолчанию сервис сам выбирает парсер. Порядок такой: строгая JSON-валидация, если включена; XML-похожий ввод; обычный JSON; JS-like object; Python repr/dict/list; YAML; затем обычный текст.

JSON-like object

Поддерживаются частые фрагменты из JavaScript-консоли и логов: ключи без кавычек, одинарные кавычки, trailing comma, // и /* */ комментарии, true/false/null и undefined.

Python и Odoo/debug-вывод

Python dict/list/tuple/set приводятся к JSON-совместимым структурам. True, False и None превращаются в boolean/null. Некоторые объекты вида <Command.SET: 6> сохраняются как строки, а datetime.datetime, datetime.date и datetime.time с числовыми аргументами конвертируются в читаемые значения.

YAML, XML и обычный текст

YAML принимается, если он распознан как объект или массив. XML разбирается отдельно и переводится в JSON-подобную структуру. Если ни один структурный формат не подошел, ввод считается обычной строкой.

Настройки и результат

Вывод и отступ

Вывод выбирает формат результата: JSON, YAML, CSV, Python или XML. Отступ управляет итоговым кодом: компактно, 2 пробела, 4 пробела или Tab. Кнопка Минифицировать отправляет тот же ввод с отступом 0.

A-Z, ASCII и строгая валидация

A-Z сортирует ключи объектов. ASCII экранирует не-ASCII символы там, где формат это поддерживает. Строгая валидация отключает мягкий разбор и требует валидный JSON с двойными кавычками и без лишнего синтаксиса.

CSV

CSV работает для объекта или массива объектов. Вложенные объекты разворачиваются в колонки через точку, например user.email. Массивы внутри ячеек остаются JSON-строками, чтобы структура не терялась.

Код, дерево и статистика

Результат можно смотреть как код или дерево. Дерево полезно для вложенных API-ответов: оно показывает уровни, массивы, объекты и позволяет раскрывать только нужные ветки. Статистика считает размер, ключи, объекты, массивы, глубину и строки.

Поиск

Поиск по результату работает как в редакторе: показывает количество совпадений и переходит к текущему. Можно искать обычный текст, включить regex или использовать JSONPath. Поддерживаются запросы вида $.users[*].email, $..email, индексы массивов и ключи в квадратных скобках.

Редактор и файлы

Можно импортировать файл в исходный редактор, копировать и скачивать исходный текст или результат. Настройки редактора сохраняются локально: размер таба, отображение пробелов и табов, номера строк, перенос строк, активная строка, пары скобок, тема и ширина панелей.

Язык интерфейса

Переключатель RU/EN в верхней панели меняет язык интерфейса, информационных страниц, SEO-метаданных и динамических сообщений редактора. Английская версия открывается через параметр ?lang=en, русская используется по умолчанию.

Данные сохраняются на сервере?

Нет. Сервис отправляет текст на обработку и возвращает результат, но не хранит пользовательские данные. Для защиты от тяжелых запросов действует лимит входного текста: 1000000 байт.

API v1

API v1 повторяет основную логику сайта и нужен для интеграций: скриптов, внутренних админок, CI-проверок, debug-панелей и сервисов, где нужно привести данные к читаемому виду без открытия браузера.

POST /api/v1/format Разбирает входной текст и возвращает результат в выбранном формате.
POST /api/v1/detect Определяет тип данных; опционально возвращает нормализованные данные и статистику.
POST /api/v1/search Выполняет JSONPath-поиск по распознанной структуре.
GET /api/v1/formats Возвращает поддерживаемые режимы входа, форматы вывода и примеры JSONPath.
GET /api/v1/limits Показывает текущие лимиты API.
Параметры форматирования

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 доступен по /api/, OpenAPI-схема — по /api/openapi.json, интерактивная документация FastAPI — по /api/docs. Текущие лимиты можно получить через GET /api/v1/limits.

Ошибки и лимиты

Ошибки публичного API возвращаются как application/problem+json. Слишком большой ввод дает HTTP 413, ошибка разбора или некорректный JSONPath — HTTP 422. Лимит входного текста: 1000000 байт, максимум результатов поиска: 500.