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

Python提取JSON中vulnerabilityID与vulnerabilitySoln的报错解决

解决JSON提取字段时的TypeError问题

错误原因

报错TypeError: list indices must be integers or slices, not str是因为你尝试用字符串键访问列表类型的数据。从你的JSON结构来看:

  • 最外层的vulnerabilities是列表,遍历得到的每个item里,item["vulnerabilities"]依然是一个列表,而非字典,所以不能直接用["vulnerabilityID"]这种字符串键去取值。

修改后的代码

方式1:通用遍历(支持子列表多个漏洞条目)

这种方式可以处理子列表包含多个漏洞的情况,确保所有条目都能被提取:

import json

with open("dummy.json") as json_file:
    data = json.load(json_file)

def vulnData():
    # 遍历外层vulnerabilities列表
    for item in data["vulnerabilities"]:
        # 遍历内层的vulnerabilities子列表
        for vuln in item["vulnerabilities"]:
            vulnID = vuln["vulnerabilityID"]
            vulnSoln = vuln["vulnerabilitySoln"]
            print(vulnID, vulnSoln)

vulnData()

方式2:直接索引(适合子列表仅含一个元素)

如果确定每个外层条目的子vulnerabilities列表只有一个元素,可以直接用索引[0]访问,代码更简洁:

import json

with open("dummy.json") as json_file:
    data = json.load(json_file)

def vulnData():
    for item in data["vulnerabilities"]:
        # 取子列表的第一个元素
        vuln = item["vulnerabilities"][0]
        vulnID = vuln["vulnerabilityID"]
        vulnSoln = vuln["vulnerabilitySoln"]
        print(vulnID, vulnSoln)

vulnData()

验证结果

运行修改后的代码,会输出目标字段值:

12345 http://website.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:15:32