Сглаживание JSON
Преобразуйте вложенный JSON в плоские ключи с разделителем и при необходимости восстановите исходную структуру. Все операции выполняются локально в браузере.
Похожие
Варианты использования
- Запросы и обновления MongoDB: используйте точечные ключи вместо ручного прописывания путей
- Экспорт в CSV и Excel: превращайте сложный JSON в плоские колонки для табличной обработки
- Подготовка документов для Elasticsearch: делайте глубокие структуры удобнее для индексации и поиска
- Отладка API: сравнивайте поля запросов и ответов в одном плоском представлении
- Подготовка конфигов и переменных среды: раскрывайте вложенные настройки из package.json и settings.json
Как использовать
- Вставьте JSON в левое поле или загрузите локальный файл .json
- Выберите режим flatten или unflatten и настройте разделитель, массивы и максимальную глубину
- Проверьте результат справа вместе со статистикой по количеству ключей и глубине
- Скопируйте результат или скачайте его как файл .json
Функции
- Двустороннее преобразование: поддерживаются и flatten, и unflatten без лишних ручных шагов
- Свой разделитель: используйте точку, подчёркивание, слэш или другой символ под требования целевой системы
- Гибкая работа с массивами: можно раскрывать элементы по индексам или сохранять массив целиком
- Ограничение глубины: помогает остановить раскрытие на нужном уровне и не получать слишком длинные ключи
- Локальная обработка: JSON не отправляется на сервер, всё выполняется прямо в браузере
- Удобный рабочий поток: поддерживаются загрузка .json, пример, копирование результата и скачивание файла
Примеры кода
Сглаживание JSON на JavaScript
javascriptfunction flatten(obj, prefix = '', sep = '.') {
return Object.entries(obj).reduce((acc, [key, value]) => {
const newKey = prefix ? `${prefix}${sep}${key}` : key;
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
Object.assign(acc, flatten(value, newKey, sep));
} else {
acc[newKey] = value;
}
return acc;
}, {});
}
flatten({ user: { name: 'Alice', contact: { email: 'a@x.com' } } });
// => { 'user.name': 'Alice', 'user.contact.email': 'a@x.com' }Сглаживание JSON на Python
pythondef flatten(obj, parent_key='', sep='.'):
items = {}
for key, value in obj.items():
new_key = f"{parent_key}{sep}{key}" if parent_key else key
if isinstance(value, dict):
items.update(flatten(value, new_key, sep))
else:
items[new_key] = value
return items
import json
print(json.dumps(flatten({'user': {'name': 'Alice'}}), indent=2))
# => {"user.name": "Alice"}Сглаживание JSON через jq в командной строке
bash# Превратить вложенный JSON в плоскую структуру с точечными ключами
jq '[paths(scalars) as $p | {"key": $p | join("."), "value": getpath($p)}] | from_entries' data.json
# Восстановить плоский JSON обратно во вложенный
# Используйте jq 1.7+ с внешним фильтром или режим unflatten в этом инструментеЧасто задаваемые вопросы
Что такое сглаживание JSON и когда оно нужно?
Сглаживание JSON превращает вложенные объекты и массивы в плоские пары ключ-значение. Это особенно полезно для MongoDB с точечной нотацией, экспорта в CSV, индексации в Elasticsearch, переменных среды и сравнения полей API.
Можно ли восстановить исходную вложенную структуру?
Да. Если использовать тот же разделитель, инструмент соберёт плоские ключи обратно в объекты и массивы. Последовательные числовые ключи автоматически распознаются как массивы.
Можно ли изменить разделитель и способ обработки массивов?
Да. Вы можете выбрать точку, подчёркивание, слэш, двойное подчёркивание или свой разделитель. Массивы можно раскрывать как `items.0`, `items.1` или сохранять целиком.
Безопасно ли обрабатывать JSON онлайн?
Да. Все вычисления выполняются локально в браузере, поэтому JSON не загружается на внешний сервер и остаётся на вашем устройстве.
Как использовать результат в MongoDB?
MongoDB обращается к вложенным полям через точечный путь. Ключи, полученные после flatten, можно напрямую использовать в `find`, `update` и агрегирующих пайплайнах.
Подходит ли результат для CSV и Excel?
Да. После сглаживания поля оказываются на одном уровне, поэтому JSON проще передать в JSON-to-CSV, Excel или Pandas как набор колонок.
Что делать, если в исходных ключах уже есть точка или разделитель?
В этом случае при восстановлении возможен конфликт уровней. Лучше выбрать другой разделитель или заранее экранировать такие ключи.
Справится ли инструмент с большим JSON?
Обычные ответы API и конфигурации обрабатываются быстро. Для очень больших файлов лучше разбить данные на части или воспользоваться локальными CLI, например `jq`.
Устранение неполадок
Инструмент пишет, что вход не является валидным JSON
Обычно причина в синтаксисе: пропущенные кавычки, лишние запятые, незакрытые скобки или значения вроде True/False. Сначала проверьте текст в JSON-форматтере.
После unflatten структура восстанавливается неправильно
Скорее всего, в исходных ключах уже был выбранный разделитель. Попробуйте другой разделитель или предварительно экранируйте конфликтующие ключи.
После раскрытия массивов CSV становится слишком широким
При раскрытии по индексам каждая ветка массива превращается в отдельные поля. Если вам важнее компактная таблица, включите сохранение массива как одного значения.
Большой JSON тормозит браузер
Очень крупные JSON-файлы занимают много памяти. Разбейте данные на части или используйте локальные инструменты вроде `jq`, Python или Node.js.
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python