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

如何向现有JSON数组添加新值?解决KeyError: 'responses'报错

解决KeyError: 'responses'的问题

嘿,这问题我一眼就看出来啦!你代码里的错误根源是访问了不存在的顶级键data['responses']——你的JSON结构里,responses是嵌套在intents数组的每个单个意图对象里的,不是根对象data的直接属性,所以直接取data['responses']肯定会报错。

修正后的代码

我们只需要在找到匹配tag的意图对象后,直接操作这个对象的responses数组就行,另外还要注意filename变量要和读取的文件名对应:

import json
from flask import request  # 假设你用的是Flask,根据实际场景调整

tgname = request.form['tags']
x = request.form['newres']
filename = 'intents.json'  # 明确定义要操作的文件名

with open(filename, 'r') as file:
    data = json.load(file)

# 遍历意图数组,定位到目标tag对应的对象
intent_found = False
for t in data["intents"]:
    if t['tag'] == tgname:
        t['responses'].append(x)  # 直接操作当前意图对象的responses数组
        intent_found = True
        break  # 找到目标后立即退出循环,提升效率

# 可选:如果没找到对应tag,给出调试提示
if not intent_found:
    print(f"Tag '{tgname}' 未在intents.json中找到")

with open(filename, 'w') as f:
    json.dump(data, f, indent=4)  # 加indent让JSON保持格式化,可读性更好,可选

额外小提示

  • 如果是要添加新的pattern,只需要把t['responses'].append(x)改成t['patterns'].append(x)就行
  • 新增的intent_found判断能帮你避免:当传入的tag不存在时,代码静默执行却没做任何修改的情况,方便调试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:17:40