我有多个包含关系数据的json文件需要合并,每个文件都有一个记录,其中commonkey是所有文件中的公共键,在下面的示例中a0、a1都是公共的钥匙。那个value是多个键的嵌套字典,如Key1、key2等,如下所示,我需要合并多个json文件并获得输出如图所示dboutput.json文件,文件名作为合并操作中的索引。这样的问题是一个related question,它合并了丢失的信息,但在我的例子中,我不希望任何更新来替换现有的键或跳过更新,如果碰到一个现有的键,另一个由文件名索引的嵌套字典将创建如下:
示例:
文件db1.json:
"a0": { "commonkey": [ "a1", "parentkeyvalue1" ], "key1": "kvalue1", "key2": "kvalue2" "keyp": "kvalue2abc" }, "a1": { ... }
文件db2.json:
^{pr2}$期望输出
文件dboutput.json文件在
"a0": { "commonkey": [ "a1", "parentkeyvalue1" ], "key1": {"db1":"kvalue1","db2":"kvalue1xyz"} , "key2": {"db1":"kvalue2","db2":"kvalue2"} , "key3": {"db2":"kvalue2"} "keyp": {"db1":"kvalue2abc"} }, "a1": { ... }
那么如何进行这种无损合并呢?注意“key2”:{“db1”:“kvalue2”,“db2”:“kvalue2”}即使key\value对相同,它们也需要单独存储。实际上,输出是所有输入文件的联合,并且包含所有其他文件的所有条目。在
还有
"commonkey": [
"a1",
"parentkeyvalue1"
],
对于所有文件都是相同的,因此不需要重复
一个简单的解决方案是迭代每个JSON对象,并在您看到的每个“commonkey”中添加字典对。下面是一个示例,您可以在列表中加载每个JSON文件,然后迭代地合并它们。在
我终于弄到了:
相关问题 更多 >
编程相关推荐