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

如何通过FastAPI正确将DataFrame以JSON格式返回?

问题

我用FastAPI开发了一个返回JSON格式数据的API,最初通过Pandas的.to_json()方法将DataFrame转为JSON(指定orient="records"参数),先保存为本地.json文件再读取后返回,代码如下:

DATA2.to_json("json_records.json", orient="records")

with open('json_records.json', 'r') as f:
    data = json.load(f)

return(data)

这种方式运行正常,但由于脚本需要部署到公司服务器,不能生成本地文件,于是尝试直接转换后返回:

data = DATA2.to_json(orient="records")

return(data)

此时API输出的JSON包含大量转义符\,示例如下:

"[{\"ExtraccionHora\":\"12:53:00\",\"MiembroCompensadorCodigo\":117,\"MiembroCompensadorDescripcion\":\"OMEGA CAPITAL S.A.\",\"CuentaCompensacionCodigo\":\"1143517\",\"CuentaNeteoCodigo\":\"160234117\",\"CuentaNeteoDescripcion\":\"UNION FERRO SRA A\",\"ActivoDescripcion\":\"X17F3\",\"ActivoID\":8,\"FinalidadID\":2,\"FinalidadDescripcion\":\"Margenes\",\"Cantidad\":11441952,\"Monto\":-16924935.3999999985,\"Saldo\":-11379200.0,\"IngresosVerificados\":11538288.0,\"IngresosNoVerificado\":0.0,\"MargenDelDia\":0.0,\"SaldoConsolidadoFinal\":-16765847.3999999985,\"CuentaCompensacionCodigoPropia\":\"80500\",\"SaldoCuentaPropia\":-7411284.3200000003,\"Resultado\":\"0\",\"MiembroCompensadorID\":859,\"CuentaCompensacionID\":15161,\"CuentaNeteoID\":7315285}....."

请问如何正确将DataFrame以orient="records"格式转为JSON并通过FastAPI返回?

解决方案

方法1:直接返回Python字典列表(推荐)

使用Pandas的.to_dict(orient="records")方法,直接将DataFrame转换为Python字典组成的列表。FastAPI会自动将这个列表序列化为标准JSON格式返回,无需手动处理JSON字符串:

return DATA2.to_dict(orient="records")

这种方式无需额外依赖,逻辑简洁,输出的JSON不会包含转义符。

方法2:内存中解析JSON字符串

如果一定要使用.to_json()方法,可以将生成的JSON字符串用json.loads()解析为Python对象后再返回,逻辑和你之前存文件再读取一致,只是跳过了文件存储步骤:

import json

data_json_str = DATA2.to_json(orient="records")
data = json.loads(data_json_str)
return data

FastAPI接收Python对象后会正确序列化,避免二次转义问题。

方法3:使用JSONResponse直接返回字符串

借助FastAPI的JSONResponse类,直接传入JSON字符串并指定媒体类型,避免FastAPI对字符串进行二次序列化:

from fastapi.responses import JSONResponse

data_json_str = DATA2.to_json(orient="records")
return JSONResponse(content=data_json_str, media_type="application/json")

这种方式适合特殊场景,一般优先推荐前两种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:30:39