JSON ディープマージ
ベース文書とオーバーレイ文書を貼り付け、配列の戦略と競合ルールを選ぶと、マージ結果と操作ログを確認できます。
ブラウザ内でローカルに実行
ベース文書とオーバーレイ文書を貼り付け、配列の戦略と競合ルールを選ぶと、マージ結果と操作ログを確認できます。
ブラウザ内でローカルに実行
このツールはオーバーレイの JSON 文書をベース文書にマージし、結果を整形済み JSON として出力します。オブジェクトはキーごとに再帰的に統合され、オーバーレイにしかないキーは追加され、両方にあるキーは競合ルールに従います。オーバーレイ値を使用する、ベース値を保持する、またはパスを示すエラーで停止する、のいずれかです。
配列は選択した戦略に従います。置換(オーバーレイの配列を採用)、連結(ベースの要素の後にオーバーレイの要素を追加)、一意の値を連結(重複を除いて同じ順序で追加)、キーでオブジェクトをマージ(キーフィールドの値が同じ要素を統合し、新しい要素は追加)。処理はすべてブラウザ内で行われ、変更はマージ操作にパスごとに記録されます。
オブジェクトは再帰的にマージされ、独自キーは名前で比較されます。オーバーレイにしかないキーは追加され、追加操作としてログに残ります。__proto__、constructor、prototype といった名前はオーバーレイ側で拒否されるため、細工した文書がオブジェクトのプロトタイプに到達することはありません。異なるスカラー値は選択したルールで処理され、オーバーレイ値、ベース値、または 競合が発生しました: $.service.retries のようなエラーになります。
型が異なる値は変換されません。一方が数値で他方が同じキーに配列を持つ場合は競合として扱われ、同じルールに従います。同一の値はそのまま残りログにも出ず、完全に同じ 2 つの文書は $: 変更なし という 1 件の記録で終わります。
配列を置換はオーバーレイの配列をそのまま採用し、ベースの要素数が多くても維持しません。配列を連結はベースの要素の後にオーバーレイの要素を重複を除かずに追加し、一意の値を連結は JSON 表現で重複を判定して取り除きます。たとえば ["a","b"] と ["c","a"] は ["a","b","c"] になります。
キーでオブジェクトをマージはキーフィールドの値で要素を突き合わせます。{id: 1} のオーバーレイ要素は追加されず、ベースの id 1 の要素に統合されます。比較は文字列として行われるため 1 と "1" は同じ識別子です。キーを持たない要素やオブジェクト以外の要素はそのまま追加されます。キー名の前後の空白は取り除かれ、フィールドの余分な空白は無視されます。
結果はマージが生成した順序のままの JSON です。ベースのキーが先に、追加分が後に並びます。マージ操作のログは確認の最短経路で、各項目が変更されたパスを示し、キー付き配列では $.users[id=1].role の形式を使います。コピーはマージ結果をクリップボードに入れ、ダウンロードは voritools-merged.json として保存します。
マージは完全にブラウザ内で実行され、アップロードもネットワーク要求もありません。社内設定やテストデータにも安全に使えます。競合を自動で解決したり型を変換したりはせず、あいまいな場合は選択したルールに従い、行った内容を記録します。