マージする必要があるリレーショナル データを含む複数の json ファイルがあります。各ファイルには、すべてのファイルの共通キーである commonkey を持つレコードがあります。以下の例では、a0 、a1 は共通キーです。値は、複数のネストされたディクショナリです。 Key1、key2 などのキーを以下に示すように、複数の json ファイルをマージし、dboutput.json に示すように出力を取得する必要があります。ファイル名はマージ操作のインデックスとして機能します。このような質問は、失われた情報をマージする関連する質問ですが、私の場合、既存のキーを置き換えるか、更新をスキップする更新は必要ありません。既存のキーをヒットすると、ファイル名でインデックス付けされた別のネストされた辞書が作成されます。
例:
ファイル db1.json:
"a0": {
"共通鍵": [
"a1"、
「親キー値1」
]、
"key1": "kvalue1",
"key2": "kvalue2"
"keyp": "kvalue2abc"
}、
"a1": {
...
}
ファイル db2.json:
"a0": {
"共通鍵": [
"a1"、
「親キー値1」
]、
"key1": "kvalue1xyz",
"key2": "kvalue2",
"key3": "kvalue2"
}、
"a1": {
...
}
望ましい出力
ファイル dboutput.json
"a0": {
"共通鍵": [
"a1"、
「親キー値1」
]、
"key1": {"db1":"kvalue1","db2":"kvalue1xyz"} ,
"key2": {"db1":"kvalue2","db2":"kvalue2"} ,
"key3": {"db2":"kvalue2"}
"keyp": {"db1":"kvalue2abc"}
}、
"a1": {
...
}
では、このようなロスレス マージを行うにはどうすればよいでしょうか。"key2": {"db1":"kvalue2","db2":"kvalue2"} に注意してください。キーと値のペアが同じであっても、別々に保存する必要があります。実際には、出力はすべての入力ファイルの結合であり、他のすべてのファイルからのすべてのエントリが含まれています。
また
"commonkey": [
"a1",
"parentkeyvalue1"
],
すべてのファイルで同じになるため、繰り返す必要はありません