首頁 > 後端開發 > Python教學 > 如何在FastAPI應用程式中高效返回JSON格式的資料?

如何在FastAPI應用程式中高效返回JSON格式的資料?

Barbara Streisand
發布: 2024-11-28 22:22:11
原創
780 人瀏覽過

How Can I Efficiently Return JSON-Formatted Data in a FastAPI Application?

使用 FastAPI 傳回 JSON 格式的資料

開發 FastAPI 應用程式時,了解傳回 JSON 格式資料的細微差別至關重要。這需要深入研究 FastAPI 的內部工作原理並理解 JSON 序列化所扮演的角色。

JSON 序列化的困境

問題的核心在於 json.dumps() 的使用在返回物件之前序列化物件。雖然這種方法看起來合乎邏輯,但它引入了冗餘序列化,因為 FastAPI 在回應產生期間自動對傳回值進行 JSON 編碼。這會導致 JSON 資料的字串表示看似不正確,而不是格式整齊的字典。

解決方案

要修正此問題,您必須允許 FastAPI 處理 JSON 序列化過程。這可以透過直接傳回資料物件(字典、列表等)來實現。 FastAPI 將使用 jsonable_encoder 將它們無縫轉換為 JSON 相容的數據,並將其包裝在 JSONResponse 中。產生的回應將包含 application/json 編碼數據,確保所需的 JSON 格式。

實作選項

選項1:使用回傳值

如預期回傳資料物件:

@app.get('/')
async def main():
    return d
登入後複製

在幕後,FastAPI 將使用JSONResponse 序列化dict (d)並使用json.dumps().

選項2:自訂回應物件

如果需要精確控制回應,請直接使用Response物件:

@app.get('/')
async def main():
    return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')
登入後複製

這種方法授予您對media_type 的自由(例如,「application/json」),提供可自訂性。

注意: json.dumps() (str) 的預設參數允許日期時間物件的序列化。透過傳遞縮進,您可以控制 JSON 輸出的格式。

以上是如何在FastAPI應用程式中高效返回JSON格式的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板