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

Python新手求助:如何将大型嵌套JSON文件转换为CSV?

嘿,作为Python新手要处理嵌套JSON转CSV确实有点绕,我来给你几个实用的方案,从基础手动处理到用工具库简化操作都有,一步步来哈!

首先咱们先看看你给的示例JSON结构:顶层有一堆普通字段,还有个Signatories的嵌套数组,里面是包含Name和BVB的字典。转CSV的关键就是把这些嵌套的字段“展开”成表格里的列,或者根据需求处理多元素的情况。

方案1:用Python内置的json和csv模块手动处理(适合理解原理)

如果想搞清楚底层逻辑,可以用这两个基础库来写代码,分情况处理:

情况1:Signatories只有一个元素(像你的示例那样)

import json
import csv

# 第一步:读取并加载JSON文件
with open('your_data.json', 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

# 第二步:确定CSV的表头——把顶层字段和嵌套字段合并
top_level_keys = [key for key in json_data.keys() if key != 'Signatories']
nested_keys = ['Signatories_Name', 'Signatories_BVB']
headers = top_level_keys + nested_keys

# 第三步:整理要写入的行数据
top_level_values = [json_data[key] for key in top_level_keys]
# 提取嵌套的签名者信息
signatory = json_data['Signatories'][0]
nested_values = [signatory['Name'], signatory['BVB']]
full_row = top_level_values + nested_values

# 第四步:写入CSV文件
with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(headers)
    writer.writerow(full_row)

情况2:Signatories有多个元素(每个签名者对应一行)

如果你的JSON里Signatories是多个对象的数组,咱们可以循环每个签名者,重复顶层字段生成多行:

import json
import csv

with open('your_data.json', 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

top_level_keys = [key for key in json_data.keys() if key != 'Signatories']
nested_keys = ['Signatories_Name', 'Signatories_BVB']
headers = top_level_keys + nested_keys

with open('output_multi.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(headers)
    
    # 遍历每个签名者,生成一行数据
    for signatory in json_data['Signatories']:
        top_level_values = [json_data[key] for key in top_level_keys]
        nested_values = [signatory['Name'], signatory['BVB']]
        writer.writerow(top_level_values + nested_values)

方案2:用pandas一键搞定(推荐新手,简单高效)

如果你不想写那么多代码,pandas库的json_normalize函数可以自动帮你展开嵌套的JSON结构,超级省心!

首先得先安装pandas(如果没装的话):

pip install pandas

然后代码就几行:

import pandas as pd
import json

# 读取JSON数据
with open('your_data.json', 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

# 自动展开嵌套结构生成DataFrame
df = pd.json_normalize(json_data)

# 保存为CSV,index=False是去掉默认的行索引
df.to_csv('output_pandas.csv', index=False, encoding='utf-8')

运行之后,你会得到一个CSV,嵌套的字段会自动命名成Signatories.Name、Signatories.BVB这样的格式,如果Signatories有多个元素,会自动生成多行对应每个签名者,顶层字段会重复填充,完全不用自己写循环!

小提醒:处理大型JSON文件

如果你的JSON文件特别大,一次性加载到内存可能会卡,这时候可以:

  • 如果JSON是每行一个JSON对象的格式,用pandas的read_json配合chunksize参数逐块处理;
  • 如果是单个大JSON对象,也可以考虑用流式JSON解析库(比如ijson)来逐部分读取处理,避免内存溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:09:53