Python读取嵌套结构JSON文件并提取指定字段生成Pandas数据表的方法
多层嵌套JSON提取指定字段生成表格的修正方案
原有代码的核心问题定位
- JSON读取API误用:
json.loads()的输入是JSON格式字符串,直接读取打开的文件对象需要使用json.load(),原代码传入文件句柄会直接触发类型报错 - 嵌套路径定位偏差:示例JSON里的单条业务记录存放在
response -> docs的路径下,原代码直接遍历data['response'],实际遍历的是该字典的顶层键(results/start/docs),完全无法触达具体的记录内容 - 字段取值规则不匹配:Python字典不支持
dct['name', 'age']这种一次取多键的写法,且示例中name、age字段的值本身是单元素列表,需要提取列表内的实际值才能生成规整的二维表格结构
适配多层嵌套的通用处理逻辑
不管外层嵌套多少类似responseHeader这类元数据结构,只要顺着JSON的键值层级定位到存放具体业务记录的列表节点,后续的字段提取逻辑和普通扁平化JSON完全一致,不需要额外的特殊处理。
完整可运行的修正代码
import json import pandas as pd # 使用上下文管理器自动管理文件句柄,避免文件泄漏 with open("myfile.json", "r", encoding="utf-8") as f: # 直接读取文件对象解析JSON结构 full_content = json.load(f) # 沿嵌套路径定位到实际的记录列表,跳过无关的元数据层 docs_list = full_content["response"]["docs"] # 逐记录提取目标字段,将单元素列表中的实际值取出 processed_records = [ { "name": record["name"][0], "age": record["age"][0] } for record in docs_list ] # 生成规整的表格结构 result_df = pd.DataFrame(processed_records) print(result_df)
运行输出效果
执行上述代码后会直接输出符合预期的表格:
name age 0 Peter 23 1 Harry 30
内容的提问来源于stack exchange,提问作者lakeviking
相关产品推荐
相关产品推荐

