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

Инструмент Слияния JSON

Глубоко сливает несколько JSON-объектов в один с параметрами разрешения конфликтов.

JSON объект #1
JSON объект #2

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

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

Чтобы использовать инструмент, вставьте ваши JSON объекты в поля ввода, выберите предпочтительную стратегию объединения (например, перезапись, конкатенация массивов или глубокое объединение) и нажмите кнопку объединения. Инструмент автоматически обрабатывает вложенные структуры, разрешая конфликты в соответствии с выбранной стратегией. Распространённые варианты использования включают объединение конфигураций окружения, комбинирование полезных нагрузок API, консолидацию параметров из нескольких сервисов и интеграцию тестовых данных или макетных данных.

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

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

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

import json
from copy import deepcopy

def deep_merge(base: dict, override: dict, strategy: str = "last_wins") -> dict:
    """
    Deep merge two dicts.
    strategy: 'last_wins' | 'first_wins' | 'array_concat'
    """
    result = deepcopy(base)
    for key, value in override.items():
        if key in result:
            if isinstance(result[key], dict) and isinstance(value, dict):
                result[key] = deep_merge(result[key], value, strategy)
            elif isinstance(result[key], list) and isinstance(value, list) and strategy == "array_concat":
                result[key] = result[key] + value
            else:
                if strategy != "first_wins":
                    result[key] = deepcopy(value)
        else:
            result[key] = deepcopy(value)
    return result

# Example
a = {"name": "Alice", "scores": [1, 2], "meta": {"v": 1}}
b = {"name": "Bob",   "scores": [3, 4], "meta": {"v": 2, "new": True}}

print(json.dumps(deep_merge(a, b, "last_wins"),   indent=2))
print(json.dumps(deep_merge(a, b, "first_wins"),  indent=2))
print(json.dumps(deep_merge(a, b, "array_concat"),indent=2))

Comments & Feedback

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