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

Python中如何将API返回的嵌套JSON转换为规整的Pandas DataFrame

嵌套JSON转指定字段DataFrame的解决方法

你不需要额外安装第三方模块,使用Python自带的json模块和pandas即可实现需求,核心是先定位到JSON中存储有效数据的嵌套层级,再做字段筛选。


方法1:直接处理API返回的JSON数据(无需先存本地文件)

你调用接口返回的JSON结构中,COOKRCP01节点下的row数组才是存储所有菜谱条目的有效数据层,直接解析该层即可:

import requests
import pandas as pd

def Bring_API():
    url = "api_url/authenticate key/options"
    response = requests.get(url)
    data = response.json()
    # 定位到菜谱数据的列表层
    recipe_list = data["COOKRCP01"]["row"]
    # 只提取需要的指定字段生成DataFrame
    df = pd.DataFrame(recipe_list, columns=["RCP_PARTS_DTLS", "RCP_NM"])
    # 可选:处理原料字段的换行内容,去掉第一行的菜名,只保留配料
    df["RCP_PARTS_DTLS"] = df["RCP_PARTS_DTLS"].str.split("\n").str[1]
    print(df)
    # 可按需导出为csv、excel等格式
    # df.to_csv("recipe.csv", index=False, encoding="utf-8-sig")
    return df

Bring_API()

方法2:处理本地已保存的JSON文件

如果已经把接口返回内容存为本地JSON文件,不要直接用pd.read_json读取,先解析成字典再定位层级:

import json
import pandas as pd

# 读取本地JSON文件并解析为字典
with open(r'C:\Users\admin\Desktop\1.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
# 定位到菜谱数据列表层
recipe_list = data["COOKRCP01"]["row"]
# 提取指定字段生成DataFrame
df = pd.DataFrame(recipe_list, columns=["RCP_PARTS_DTLS", "RCP_NM"])
# 可选:处理原料字段的换行内容
df["RCP_PARTS_DTLS"] = df["RCP_PARTS_DTLS"].str.split("\n").str[1]
print(df)

核心说明

你之前的代码运行结果不符合预期,是因为直接把整个嵌套JSON传给pd.read_json,pandas会把COOKRCP01下的RESULT、row、total_count这些子节点当成行索引,对应值作为单元格内容,自然会出现结构混乱的情况。
如果需要提取更多字段,直接在pd.DataFrame的columns参数列表中添加对应的JSON键名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:24:05