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

Flask Rest API多JSON响应转Pandas DataFrame失败求助

解决从Flask REST API获取多JSON对象转Pandas DataFrame的问题

嘿,我之前也碰到过类似的麻烦,从API拿数据转DataFrame的时候踩过不少坑,咱们一步步来排查解决:

首先确认API返回的JSON格式

先别着急转DataFrame,先把API返回的内容打出来看看,用print(response.text)就行。一般会遇到两种常见格式:

情况1:返回的是标准JSON数组(最常见)

如果输出是像[{"asset_id": "1", "value": 100}, {"asset_id": "2", "value": 200}]这样的数组,那直接解析转DataFrame就行:

import requests
import pandas as pd

# 调用API
response = requests.get("你的Flask API地址")
# 解析JSON为列表
data_list = response.json()
# 转成DataFrame
df = pd.DataFrame(data_list)

要是这里报错,大概率是JSON格式有问题,比如API返回了错误页(比如500错误的HTML),或者数组里有格式不统一的对象,这时候得先修正API返回的内容,或者过滤掉无效的对象。

情况2:返回的是换行分隔的独立JSON(NDJSON格式)

有些API会每行返回一个JSON对象,比如:

{"asset_id": "1", "value": 100}
{"asset_id": "2", "value": 200}

这时候直接用response.json()会报错,因为这不是合法的JSON数组,得逐行解析:

import requests
import pandas as pd
import json

response = requests.get("你的Flask API地址")
# 按行拆分内容,过滤空行
lines = [line.strip() for line in response.text.split('\n') if line.strip()]
# 逐行解析JSON
data_list = [json.loads(line) for line in lines]
# 转DataFrame
df = pd.DataFrame(data_list)

处理嵌套JSON的情况

如果每个JSON对象里还有嵌套的子对象,比如{"asset_id": "1", "details": {"price": 100, "location": "NY"}},直接用pd.DataFrame()会把details列变成字典,这时候可以用pd.json_normalize()来扁平化数据:

df = pd.json_normalize(data_list)

这样会生成asset_id、details.price、details.location这样的列,方便后续处理。

常见错误排查

  • 要是碰到ValueError: Expected object or value:先检查response.text,是不是API返回了非JSON内容(比如错误页面),或者JSON格式有语法错误(比如逗号漏了、引号不匹配)。
  • 要是碰到TypeError: 'dict' object is not callable:大概率是你漏了括号,应该是response.json()而不是response.json,后者是引用方法对象,不是调用它。

如果还是解决不了,把具体的错误信息和API返回的内容片段贴出来,我再帮你精准定位问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:53:52