JSONマージ
2 つの JSON オブジェクトを深くマージします。同名キーは既定で右側(B)の値、配列は全体を置き換えます。
2つのJSONを深くマージし、同名フィールドをルールに従って処理
JSONマージとは
JSONマージは2つのJSONデータをフィールド単位で統合し、1つの結果にする機能です。JSON AとJSON Bにしか存在しないフィールドはそのまま保持し、同名フィールドは選択したマージ方法に従って処理します。同名フィールドの値がどちらもオブジェクトの場合、深度マージによってオブジェクト内部のフィールドまで続けて比較できます。
JSONの深度マージでネストされたオブジェクトをどう処理するか
このツールはデフォルトで深度マージを使用します。ネストされたオブジェクトでは、外側のフィールド名が同じだからといってB全体でAを直接置き換えるのではなく、さらに下の階層までマージします。たとえばAにserver.port、Bにserver.hostがある場合、マージ後は両方のフィールドが保持されます。同じパスの値が競合した場合のみ、現在のマージ方法に従って処理されます。深度マージを無効にすると、同名フィールドはオブジェクト内部を階層ごとに比較せず、ブロック全体を値として扱います。
同名フィールドにはどの3つの処理方法がありますか?
後者を優先するとJSON Bの値を使用します。これはデフォルトの方法で、BでAのデフォルト設定を上書きしたい場合に適しています。前者を優先するとJSON Aの値を使用し、BはAに存在しないフィールドだけを補います。競合時に左側の値を保持すると、競合したフィールドは前者を保持しながら、競合数を集計できるため、2つのデータにどのような上書きリスクがあるかを先に確認できます。
配列はどのようにマージされますか?
配列は全体を上書きする方式で処理され、インデックス単位の要素マージは行いません。AとBの同じパスに配列がある場合、結果は現在の前者・後者の優先ルールに従ってどちらか一方の配列が選択され、2つの配列の要素を自動的に連結したり、1つずつマージしたりすることはありません。これにより、順序を持つリストをマージする際の予期しない組み合わせを避けられます。
どのような場合が競合になりますか?
JSON AとJSON Bの同じフィールドパスに両方とも値が存在し、その値が異なっていて、最終的な値をマージ方法によって決定する必要がある場合、そのフィールドが競合として集計されます。値が完全に同じ場合は競合になりません。ネストされたオブジェクト内部の同名フィールドも、実際のパスごとに個別に処理されます。マージ後は競合フィールド数を確認し、重要な設定が期待どおりになっているか確認できます。
JSONマージはどのような場面に適していますか?
JSON Mergeは、デフォルト設定と環境設定、異なる環境の設定ファイル、APIのデフォルト値とユーザー設定、分割して管理しているJSONデータなどの統合に適しています。具体的な変更箇所を先に確認したい場合は、JSON Diffでフィールドの追加、削除、変更を確認してからマージできます。
ローカルJSONファイルをマージする方法
ファイルアップロードタブに切り替え、1つ目のファイルをJSON A、2つ目のファイルをJSON Bに指定します。ローカルJSONファイルを直接ドラッグすることもできます。ファイルはブラウザ内で読み込まれて処理され、1ファイルあたりの上限は10 MBです。両側のデータを読み込んだ後、そのままマージできます。交換ボタンでAとBの順序を入れ替えられます。前後の順序によって上書き結果が変わるためです。
マージ後の結果を確認する方法
マージ後はまず競合フィールド数を確認し、重要なフィールドの最終値をチェックしてください。後者を優先した場合はJSON Bの値が正しいかを重点的に確認し、前者を優先した場合はAの元の値を保持する必要があるかを確認します。結果を保存する場合は、生成されたJSONをそのままコピーまたはダウンロードできます。結果は2スペースのインデントで整形され、読みやすくバージョン管理にも利用しやすくなっています。
JSONマージで同名フィールドはどう処理されますか?
JSON Mergeはデフォルトで深度マージを使用し、固有フィールドを保持しながらネストされたオブジェクトを階層ごとに統合します。同名フィールドはデフォルトでJSON Bが優先されます。JSON Aを優先する設定や、競合時に前者を保持して競合数を集計する設定にも切り替えられます。
配列は全体の値として処理し、インデックス単位ではマージしません。マージ順序はAが先、Bが後となるため、左右の入力を入れ替えると競合フィールドの最終値が変わる場合があります。
- 2つのJSONを深くマージし、固有フィールドを保持してネストされたオブジェクトを階層ごとに統合できます
- 同名フィールドは後者優先、前者優先、競合時に前者を保持して競合数を集計する3つの方法に対応
- 配列は全体の値として処理し、インデックス単位のマージや自動連結は行いません
- マージ後に競合フィールド数を集計し、上書きリスクを確認できます
- テキストとローカルJSONファイルに対応し、1ファイル10 MBまで利用できます
- すべてブラウザ内で処理し、JSONの内容はサーバーにアップロードされません