Python嵌套JSON转Excel格式不符问题:解决方案咨询
嵌套JSON转标准化DataFrame并导出Excel的解决方案
核心思路
针对含字典、列表类型字段的嵌套JSON,需先扁平化字典字段,再展开列表字段,将多层结构映射为二维表格后,即可导出符合预期的Excel文件。
示例实现
假设你已将JSON数据加载到json_data变量中,以下是通用处理代码:
1. 基础嵌套+列表展开(适配多数场景)
import pandas as pd # 1. 扁平化顶层嵌套的字典字段(如contact这类嵌套结构) df = pd.json_normalize(json_data, sep='_') # 2. 展开列表类型字段(如orders),每个列表项生成独立行 df = df.explode('orders', ignore_index=True) # 3. 若展开后的列表项仍是字典,继续扁平化该字段 if isinstance(df['orders'].iloc[0], dict): df = pd.concat([df.drop('orders', axis=1), df['orders'].apply(pd.Series)], axis=1) # 4. 导出到Excel(取消默认索引列) df.to_excel('result.xlsx', index=False)
2. 深层嵌套列表的直接处理
如果列表字段位于多层嵌套内(如user.orders),可直接用json_normalize的参数指定展开路径:
df = pd.json_normalize( json_data, record_path=['user', 'orders'], # 指向需要展开的嵌套列表字段 meta=[['user', 'id'], ['user', 'name'], ['user', 'contact', 'email']], # 保留关联的顶层字段 sep='_' # 嵌套字段的列名分隔符,生成如user_id这类列名 ) df.to_excel('deep_nested_result.xlsx', index=False)
关键说明
pd.json_normalize():自动将嵌套字典展开为扁平列,sep参数可自定义列名格式df.explode():将列表类型的单元格内容拆分为多行,同步保留其他字段的对应值- 若你的JSON结构和示例不同,只需调整
record_path、meta参数或需要展开/扁平化的字段名即可
内容的提问来源于stack exchange,提问作者Alia
相关产品推荐
相关产品推荐

