You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:23:18