如何用Python合并含深层嵌套的两个JSON文件并添加键值对?
合并嵌套JSON文件的解决方案
现有两个JSON文件:
第一个文件内容:
{ "Bob": { "tags": ["theme1", "theme2", "theme3"] }, "John": { "tags": ["theme2", "theme3"] } }
第二个文件内容:
{ "level1": { "level2": { "level3": { "Bob": { "gear": "Yes" }, "John": { "gear": "None" }, "Marcel": { "gear": "N/A" } } } } }
需合并为如下合法JSON格式的文件:
{ "level1": { "level2": { "level3": { "Bob": { "gear": "Yes", "tags": ["theme1", "theme2", "theme3"] }, "John": { "gear": "None", "tags": ["theme2", "theme3"] }, "Marcel": { "gear": "N/A" } } } } }
用户尝试的多层循环代码未能保留原嵌套结构,导致结果层级不符合预期。
解决代码
无需多层嵌套循环,直接定位到第二个文件的用户数据节点,合并对应字段即可:
import json # 读取第一个JSON文件 with open('file1.json', 'r') as f1: data1 = json.load(f1) # 读取第二个JSON文件 with open('file2.json', 'r') as f2: data2 = json.load(f2) # 定位到存储用户信息的深层节点 user_data = data2['level1']['level2']['level3'] # 遍历第一个文件的用户,合并tags字段 for username, user_info in data1.items(): if username in user_data: user_data[username]['tags'] = user_info['tags'] # 将合并后的数据写入新文件 with open('merged_json.json', 'w') as merged_file: json.dump(data2, merged_file, indent=4)
代码说明
- 直接通过键路径
data2['level1']['level2']['level3']定位目标节点,避免无意义的多层循环。 - 遍历第一个文件的用户,若在第二个文件的用户节点中存在,则将
tags字段添加到对应用户对象中。 - 直接修改原嵌套结构的
data2并写入文件,完整保留原层级,同时生成合法JSON格式。
内容的提问来源于stack exchange,提问作者dilbar
相关产品推荐
相关产品推荐

