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

如何创建包含多组键值对的JSON对象 而非多个独立对象组成的数组

问题原因

你的代码存在两个核心问题导致输出不符合预期:

  • setdefault 方法为 EMAIL/TEST/VAULT 键设置的默认值是空列表 [],天然就是数组结构
  • 你每次调用 append 方法塞入的是单键值对的小字典,自然就会生成多个对象组成的数组

同时原有逻辑存在分支判断缺陷:匹配到EMAIL的键值对会因为后续独立的if TEST判断不通过,被重复添加到VAULT中。

修正后的代码
def parse_json(self, data):
    file = 'vault.json'
    # 避免和内置json模块重名,修改变量名更安全
    json_result = {}
    for obj in data:
        key, value = obj[0], obj[1]
        if 'EMAIL' in key:
            # 默认为空字典,直接赋值键值对
            json_result.setdefault('EMAIL', {})[key] = value
        elif 'TEST' in key:
            # 用elif避免分支穿透
            json_result.setdefault('TEST', {})[key] = value
        else:
            json_result.setdefault('VAULT', {})[key] = value

    with open(file, 'w') as f:
        dump(json_result, f, indent=2, separators=(',', ':'))
修正后效果

运行上述代码后输出的JSON结构和预期完全一致:

{
  "EMAIL":{
    "EMAIL_CC":"",
    "EMAIL_CCO":"",
    "EMAIL_DESTINY":"teste@gmail.com"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:10