如何修改已有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
相关产品推荐
相关产品推荐

