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

如何修改已有JSON中嵌套key的value值?

问题:修改JSON嵌套对象中的指定键值

原始JSON:

{"TX1":{ "EMR": "XSHGJ", "ID": "200", "SERIAL": "ZZZ001"},"TX2":{"EMR": "POIUY",   "ID": "300",   "SERIAL": "YYY001"}}

我尝试用以下代码修改其中的EMR值,但结果只是在JSON根节点新增了一个键值对,并没有修改嵌套对象里的EMR:

import json

stringJson = '{"TX1":{"EMR":"XSHGJ","ID":"200"},"TX2":{"EMR":"POIUY","ID":"300"}}'
# 转换字符串为JSON对象
json_object = json.loads(stringJson)

json_object["EMR"] = 'CHANGED'

print(json.dumps(json_object, indent = 1))

当前输出:

{ "TX1": { "EMR": "XSHGJ", "ID": "200", "SERIAL": "ZZZ001" }, "TX2": { "EMR": "POIUY", "ID": "300", "SERIAL": "YYY001" }, "EMR": "CHANGED" }

期望输出:

{ "TX1": { "EMR": "CHANGED", "ID": "200", "SERIAL": "ZZZ001" }, "TX2": { "EMR": "CHANGED", "ID": "300", "SERIAL": "YYY001" } }

请问怎么实现这个需求?


解决方案

你之前的代码是直接在根JSON对象上添加了EMR键,但实际要修改的是TX1、TX2这些子对象里的EMR。需要遍历根对象里的每个子对象,逐个修改它们的EMR值。

修改后的代码如下:

import json

stringJson = '{"TX1":{"EMR":"XSHGJ","ID":"200","SERIAL":"ZZZ001"},"TX2":{"EMR":"POIUY","ID":"300","SERIAL":"YYY001"}}'
json_object = json.loads(stringJson)

# 遍历根对象的每个子对象
for key in json_object:
    # 检查子对象是否包含EMR键,避免KeyError
    if "EMR" in json_object[key]:
        json_object[key]["EMR"] = "CHANGED"

# 格式化输出
print(json.dumps(json_object, indent=1))

代码说明

  • for key in json_object:遍历根JSON对象的所有键(也就是TX1、TX2)
  • json_object[key]["EMR"] = "CHANGED":通过键获取对应的子对象,然后修改子对象里的EMR值
  • 增加if "EMR" in json_object[key]的判断是为了防止某些子对象没有EMR键时抛出异常,让代码更健壮

运行这段代码后,就能得到你期望的输出结果。

内容的提问来源于stack exchange,提问作者sammy morgan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:45:06