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
相关产品推荐
相关产品推荐

