如何合并两个JSON文件,实现嵌套对象的属性融合?
合并嵌套JSON对象属性的实现方案
假设你的两个JSON文件结构如下:
file1.json
{ "ONE": { "A": "valueA1", "B": "valueB1", "C": "valueC1" }, "TWO": { "A": "valueA2", "B": "valueB2", "C": "valueC2" } }
file2.json
{ "ONE": { "D": "valueD1" }, "TWO": { "D": "valueD2" } }
用Python实现合并
核心思路是遍历第一个JSON的顶级键,将第二个JSON对应键下的属性合并到第一个的嵌套对象中,代码如下:
import json # 读取两个JSON文件 with open('file1.json', 'r') as f1: data1 = json.load(f1) with open('file2.json', 'r') as f2: data2 = json.load(f2) # 合并对应嵌套对象的属性 for key in data1: if key in data2: # 将data2中对应键的属性更新到data1的嵌套对象 data1[key].update(data2[key]) # 写入合并后的文件 with open('merged.json', 'w') as merged_file: json.dump(data1, merged_file, indent=2)
执行后得到的merged.json会是你期望的结构:每个顶级键(ONE、TWO)下包含A、B、C、D四个属性。如果两个文件中有重复属性,update()方法会用file2的值覆盖file1的,若需要保留file1的原值,可以添加键存在性判断后再赋值。
用jq命令行工具快速合并
如果习惯用命令行,jq工具可以一行完成合并:
jq -s '.[0] * .[1] | with_entries(.value = .[0].value * .[1].value)' file1.json file2.json > merged.json
这个命令的逻辑是:先将两个文件读入数组,完成顶级对象合并后,再对每个顶级键对应的嵌套对象进行属性合并。
内容的提问来源于stack exchange,提问作者pelagos
相关产品推荐
相关产品推荐

