コンテンツへスキップ
🛠️ToolsShed

JSONマージツール

複数のJSONオブジェクトを1つに深くマージします。

JSON オブジェクト #1
JSON オブジェクト #2

このツールについて

JSON マージツールは、複数の JSON オブジェクトを深いマージを使用して 1 つの統合された構造に結合します。これは、ネストされたオブジェクトと配列がシンプルに上書きされるのではなく、知的に結合されることを意味します。設定ファイル、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.