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

如何动态修改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)

关键说明:

  1. 健壮性遍历:通过两层遍历处理嵌套数组,即使后续containers或env数组的元素数量、顺序发生变化,依然能准确找到目标对象。
  2. 文件写入修复:原代码仅将数据转为字符串但未写回文件,这里补充了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_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:20:07