如何动态修改JSON中env数组内ISTANCE_UUID对应的value值?
修改JSON嵌套数组中指定对象的Value值
你可以通过遍历嵌套数组找到目标环境变量对象,再修改其value字段。以下是完整的实现代码:
import json from pprint import pprint with open('payload/run_job.json', 'r+') as f: # 读取JSON数据 data = json.load(f) # 修改顶层"name"字段 data['name'] = 'test' # 遍历containers数组中的每个容器 for container in data['template']['containers']: # 遍历当前容器的env环境变量数组 for env_var in container['env']: # 找到name为ISTANCE_UUID的对象 if env_var['name'] == 'ISTANCE_UUID': # 修改对应的value值 env_var['value'] = 'your-target-uuid' break # 找到目标后退出循环,提升效率 # 将修改后的数据写回文件 f.seek(0) # 将文件指针移到开头 json.dump(data, f, indent=4) # 写入格式化后的JSON f.truncate() # 截断文件剩余内容,避免旧数据残留 # 打印修改后的数据 pprint(data)
关键说明:
- 健壮性遍历:通过两层遍历处理嵌套数组,即使后续
containers或env数组的元素数量、顺序发生变化,依然能准确找到目标对象。 - 文件写入修复:原代码仅将数据转为字符串但未写回文件,这里补充了
seek(0)、json.dump和truncate()操作,确保修改后的数据正确覆盖原文件。
简化写法(结构固定时):
如果你的JSON结构完全固定(比如containers只有1个元素,ISTANCE_UUID是env数组的第3个元素),可以直接通过索引快速访问:
data['template']['containers'][0]['env'][2]['value'] = 'your-target-uuid'
但这种写法依赖固定的数组索引,一旦结构变更就会出错,仅推荐在结构绝对稳定的场景使用。
内容的提问来源于stack exchange,提问作者dev_
相关产品推荐
相关产品推荐

