首页 >后端开发 >Python教程 >如何在 FastAPI 中返回 JSON 数据:自动与手动转换?

如何在 FastAPI 中返回 JSON 数据:自动与手动转换?

DDD
DDD原创
2024-12-04 12:29:10967浏览

How to Return JSON Data in FastAPI: Automatic vs. Manual Conversion?

如何使用FastAPI返回JSON格式的数据?

要使用FastAPI返回JSON格式的数据,可以使用jsonable_encoder编码器将 Python 数据结构转换为 JSON 兼容的数据。这可以使用以下选项之一来实现:

选项 1:自动使用 jsonable_encoder

照常返回数据,FastAPI 将自动处理 JSON 转换。 FastAPI 内部使用 jsonable_encoder 将数据转换为 JSON 兼容格式。 jsonable_encoder 确保不支持的对象(例如日期时间对象)转换为字符串。然后,FastAPI 将数据包装在具有 application/json 媒体类型的 JSONResponse 对象中,客户端将其作为 JSON 响应接收。

from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse

def return_dict():
    data_dict = {"name": "John Doe", "age": 30}
    return JSONResponse(content=jsonable_encoder(data_dict))

选项 2:手动 JSON 转换

如果需要进行自定义JSON转换,可以直接返回一个Response对象,media_type设置为'application/json',content设置为JSON 编码的数据。请记住使用带有 default=str 参数的 json.dumps() 函数,以确保不支持的对象在编码为 JSON 之前先转换为字符串。

import json
from fastapi import Response

def return_response():
    data_dict = {"name": "John Doe", "age": 30}
    json_data = json.dumps(data_dict, default=str)
    return Response(content=json_data, media_type="application/json")

附加说明:

  • 默认情况下,FastAPI 将 Content-Length 和 Content-Type 标头添加到响应。
  • 您可以通过设置 Response 或 JSONResponse 对象的 status_code 属性来指定响应的自定义状态代码。

以上是如何在 FastAPI 中返回 JSON 数据:自动与手动转换?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn