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

如何将嵌套JSON响应按指定列导出保存为CSV文件

实现方法

直接用Python标准库就能完成转换,不需要安装第三方依赖,核心处理逻辑:

  • 遍历JSON顶级键,每个键就是CVE列的编号值
  • 取键对应对象里的risk_meter_score字段作为RISKMETERScore列值
  • 嵌套的risk_meter_score_history数组可以序列化为JSON字符串存入RiskMeterHistory列,内置csv模块会自动处理引号、逗号的转义,不会出现列错位问题

完整代码

import csv
import json

# 替换为你实际请求得到的JSON响应数据
resp_data = {
  "CVE-2022-22721": {
    "id": 9864403,
    "risk_meter_score": 33,
    "risk_meter_score_history": [
      {"changed_at": "2022-03-15T04:05:32.000Z", "from": 25, "to": 34},
      {"changed_at": "2022-03-19T05:15:12.000Z", "from": 34, "to": 30},
      {"changed_at": "2022-06-29T04:34:45.000Z", "from": 30, "to": 33}
    ]
  }
}

# 写入CSV文件
with open("cve_risk_export.csv", "w", newline="", encoding="utf-8") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=["CVE", "RISKMETERScore", "RiskMeterHistory"])
    writer.writeheader()
    for cve_id, cve_detail in resp_data.items():
        writer.writerow({
            "CVE": cve_id,
            "RISKMETERScore": cve_detail["risk_meter_score"],
            "RiskMeterHistory": json.dumps(cve_detail["risk_meter_score_history"], ensure_ascii=False)
        })

格式调整说明

如果不需要存JSON格式的历史记录,想要更高可读性,可以自定义历史字段的拼接规则,比如把每条变更转成日期: 原值→新值的格式,用分号分隔,替换代码中RiskMeterHistory对应的赋值逻辑即可:

# 自定义可读格式的历史记录
history_str = "; ".join([
    f"{record['changed_at'][:10]}: {record['from']}→{record['to']}"
    for record in cve_detail["risk_meter_score_history"]
])

替换后导出的CSV中,RiskMeterHistory列内容为:2022-03-15: 25→34; 2022-03-19: 34→30; 2022-06-29: 30→33

导出的CSV默认用UTF-8编码,用Excel打开如果出现乱码,可以把编码改成utf-8-sig再重新生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:15:39