如何使用flatten_json模块仅扁平化JSON的data数组并导出CSV?
解决方法:提取data数组并扁平化导出CSV
嗨,没问题!既然你只需要处理JSON里的data数组部分,步骤其实很简单,我一步步给你讲清楚,新手也能轻松上手:
1. 先安装flatten_json模块
如果你还没装这个模块,先打开终端/命令行执行:
pip install flatten_json
2. 完整代码示例(带注释)
下面是针对你的需求写的完整代码,每一步都有注释,你可以直接套用:
import json import flatten_json import csv # 你的原始JSON数据(如果是从文件读取,换成下面的注释代码即可) raw_json = { "responseStatus": "SUCCESS", "responseDetails": { "total": 5754 }, "data": [ { "id": 1324651 }, { "id": 5686131 }, { "id": 2165735 }, { "id": 2133256 } ] } # 如果你是从JSON文件读取数据,替换成这段代码: # with open("你的输入文件.json", "r", encoding="utf-8") as f: # raw_json = json.load(f) # 提取你需要的data数组(这一步你已经想到啦,很棒!) data_json = raw_json["data"] # 扁平化数组中的每个元素 # 注意:flatten_json.flatten()默认处理单个JSON对象,所以我们用列表推导式遍历数组里的每个元素 flat_data = [flatten_json.flatten(item) for item in data_json] # 将扁平化后的数据导出为CSV if flat_data: # 从第一个扁平化的对象中获取表头(比如这里就是["id"]) csv_headers = flat_data[0].keys() # 写入CSV文件 with open("output.csv", "w", newline="", encoding="utf-8") as csv_file: # 使用DictWriter可以直接把字典写入CSV,非常方便 writer = csv.DictWriter(csv_file, fieldnames=csv_headers) writer.writeheader() # 写入表头 writer.writerows(flat_data) # 写入所有数据行 print("CSV文件已成功导出!") else: print("警告:data数组为空,无法生成CSV文件")
3. 额外说明
- 虽然你的
data元素现在只有id字段,扁平化后看起来和原结构一样,但这个方法扩展性很强——如果以后data里的对象有嵌套结构(比如{"id":123, "info":{"name":"张三", "age":25}}),flatten_json会自动把嵌套字段转换成info_name、info_age这种扁平格式,完全不用改代码。 - 导出的CSV文件会和你的脚本在同一个文件夹里,文件名是
output.csv,你可以自己改成想要的名字。
内容的提问来源于stack exchange,提问作者mrgou
相关产品推荐
相关产品推荐

