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

如何从指定JSON数据中提取所有severity为critical或high的vulnerabilities条目

如何从指定JSON数据中提取所有severity为critical或high的vulnerabilities条目

嘿,我来帮你搞定这个问题!你现在已经成功加载了JSON文件,接下来只需要针对嵌套的结构做一层筛选就行。咱们一步一步来:

首先,你的JSON结构是多层嵌套的:results 是一个数组,里面的每个元素都包含 vulnerabilities 数组,而我们要找的就是这个数组里严重程度符合要求的条目。

我给你调整一下代码,不仅能实现筛选,还能避免一些潜在的报错(比如某个条目里没有vulnerabilities字段,或者某个漏洞没有severity字段的情况):

import json

# 用with语句自动管理文件,比手动close更安全,还能避免异常时文件没关闭
with open('file.json', 'r') as f:
    json_object = json.load(f)

# 定义我们要筛选的严重程度,用集合查找更快
target_severities = {'critical', 'high'}

# 遍历results里的每个条目
for result in json_object['results']:
    # 先检查当前result有没有vulnerabilities字段,防止KeyError
    if 'vulnerabilities' in result:
        # 遍历每个漏洞条目
        for vuln in result['vulnerabilities']:
            # 确认漏洞有severity字段,再判断是否符合我们的目标
            # 转成小写是为了兼容可能的大小写不一致,比如"Critical"或者"HIGH"
            if 'severity' in vuln and vuln['severity'].lower() in target_severities:
                print(vuln)

如果你不想直接打印,而是想把筛选后的结果存起来后续处理,也可以改成这样:

import json

with open('file.json', 'r') as f:
    json_object = json.load(f)

target_severities = {'critical', 'high'}
filtered_vulnerabilities = []

for result in json_object['results']:
    if 'vulnerabilities' in result:
        for vuln in result['vulnerabilities']:
            if 'severity' in vuln and vuln['severity'].lower() in target_severities:
                filtered_vulnerabilities.append(vuln)

# 现在filtered_vulnerabilities里就是所有符合条件的漏洞了
print("筛选后的漏洞列表:")
for vuln in filtered_vulnerabilities:
    print(vuln)

这样做的好处:

  • 用with语句处理文件,不用手动调用f.close(),代码更简洁安全
  • 增加了字段存在性检查,避免程序因为JSON结构不完整而崩溃
  • 把严重程度转成小写再判断,能兼容JSON里可能出现的大小写混合情况(比如"Critical")

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:12:57