Перейти к содержимому

JSON Flattener

Разверните вложенный JSON в плоские пары «ключ-значение» с нотацией точек.

Об этом инструменте

Преобразование JSON — это процесс преобразования вложенной структуры JSON в одноуровневое представление с использованием ключей с точечной нотацией. Когда вы работаете со сложными вложенными объектами из API, баз данных или файлов конфигурации, этот инструмент преобразует их в простые пары ключ-значение, которые легче анализировать, хранить или экспортировать в форматы, такие как CSV или электронные таблицы.

Чтобы использовать JSON Flattener, просто вставьте вложенный JSON в область ввода и нажмите кнопку преобразования. Инструмент мгновенно преобразует многоуровневые объекты и массивы в плоские ключи, где отношения родитель-потомок представлены точками, например "user.profile.email" вместо вложенных скобок. Затем вы можете скопировать результат напрямую или экспортировать его для использования в конвейерах данных, инструментах отчётности или приложениях электронных таблиц.

Этот инструмент бесценен для инженеров данных, трансформирующих неструктурированные ответы API, разработчиков, отлаживающих сложные структуры объектов, и аналитиков, готовящих данные для платформ BI, требующих плоских схем. JSON Flattener поддерживает индексы массивов и пользовательские разделители, что делает его гибким для различных рабочих процессов преобразования данных.

Часто задаваемые вопросы

Реализация кода

def flatten(obj, prefix="", sep="."):
    """Flatten a nested dict into dot-notation keys."""
    result = {}
    if isinstance(obj, dict):
        for key, value in obj.items():
            new_key = f"{prefix}{sep}{key}" if prefix else key
            if isinstance(value, (dict, list)):
                result.update(flatten(value, new_key, sep))
            else:
                result[new_key] = value
    elif isinstance(obj, list):
        for i, value in enumerate(obj):
            new_key = f"{prefix}{sep}{i}" if prefix else str(i)
            if isinstance(value, (dict, list)):
                result.update(flatten(value, new_key, sep))
            else:
                result[new_key] = value
    else:
        result[prefix] = obj
    return result

def unflatten(flat, sep="."):
    """Reconstruct nested dict from dot-notation keys."""
    result = {}
    for key, value in flat.items():
        parts = key.split(sep)
        d = result
        for part in parts[:-1]:
            d = d.setdefault(part, {})
        d[parts[-1]] = value
    return result

# Example
nested = {"user": {"name": "Alice", "address": {"city": "Seoul"}}}
flat = flatten(nested)
print(flat)  # {'user.name': 'Alice', 'user.address.city': 'Seoul'}
print(unflatten(flat))  # back to nested

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.