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

Python实现JSON转CSV:如何筛选指定字段?

从POST响应JSON导出指定字段到CSV的解决方法

问题说明

通过requests发送POST请求获取JSON响应后,需要提取响应中data -> results数组里的ID、cve、cvss、scoreVersion字段,导出为结构规整的CSV文件。但之前的代码将整个对象塞进单个单元格,无法得到预期的列拆分效果。

错误代码回顾

之前尝试的代码:

response = requests.post(url, headers=headers, json=data, verify=False)
text_data = response.text
json_dict = json.loads(text_data)
df = pd.DataFrame.from_dict(json_dict['data'])
df.to_csv("output.csv")

问题出在pd.DataFrame.from_dict(json_dict['data']):json_dict['data']是包含results键的字典,pandas会将每个键作为单独列,results列下的每个元素都是完整的对象,导致所有字段被挤在一个单元格里。

正确实现代码

import requests
import pandas as pd

# 发送POST请求,关闭证书验证(根据实际情况调整verify参数)
response = requests.post(url, headers=headers, json=data, verify=False)
# 直接解析JSON响应,无需手动调用json.loads
json_response = response.json()
# 定位到需要的结构化数据:data下的results数组
target_data = json_response['data']['results']
# 创建DataFrame,指定需要保留的字段及顺序
df = pd.DataFrame(target_data, columns=['ID', 'cve', 'cvss', 'scoreVersion'])
# 导出CSV,设置index=False避免生成多余的索引列
df.to_csv('output.csv', index=False)

关键说明

  1. 直接解析响应:requests的response.json()方法可以直接将响应内容解析为Python字典,省去手动处理text和json.loads的步骤。
  2. 定位正确的数据层级:必须取json_response['data']['results'],这个数组中的每个元素都是一条完整的数据记录,pandas会自动将对象的键映射为列名。
  3. 筛选指定字段:通过columns参数指定需要导出的字段,既能筛选内容,也能保证列的顺序符合需求。
  4. 去除索引列:导出CSV时设置index=False,避免生成默认的索引列,完全匹配预期的CSV格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:47:25