首頁 >後端開發 >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