Сглаживание JSON

Разделитель:
Макс. глубина:(0=unlimited)

Преобразуйте вложенный JSON в плоские ключи с разделителем и при необходимости восстановите исходную структуру. Все операции выполняются локально в браузере.

Похожие

Варианты использования

  • Запросы и обновления MongoDB: используйте точечные ключи вместо ручного прописывания путей
  • Экспорт в CSV и Excel: превращайте сложный JSON в плоские колонки для табличной обработки
  • Подготовка документов для Elasticsearch: делайте глубокие структуры удобнее для индексации и поиска
  • Отладка API: сравнивайте поля запросов и ответов в одном плоском представлении
  • Подготовка конфигов и переменных среды: раскрывайте вложенные настройки из package.json и settings.json

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

  1. Вставьте JSON в левое поле или загрузите локальный файл .json
  2. Выберите режим flatten или unflatten и настройте разделитель, массивы и максимальную глубину
  3. Проверьте результат справа вместе со статистикой по количеству ключей и глубине
  4. Скопируйте результат или скачайте его как файл .json

Функции

  • Двустороннее преобразование: поддерживаются и flatten, и unflatten без лишних ручных шагов
  • Свой разделитель: используйте точку, подчёркивание, слэш или другой символ под требования целевой системы
  • Гибкая работа с массивами: можно раскрывать элементы по индексам или сохранять массив целиком
  • Ограничение глубины: помогает остановить раскрытие на нужном уровне и не получать слишком длинные ключи
  • Локальная обработка: JSON не отправляется на сервер, всё выполняется прямо в браузере
  • Удобный рабочий поток: поддерживаются загрузка .json, пример, копирование результата и скачивание файла

Примеры кода

Сглаживание JSON на JavaScript

javascript
function 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

python
def 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.