錯誤的方法:
使用 json.dumps 序列化物件時() 在 FastAPI 中傳回它們之前,JSON 會被序列化兩次。這種雙重序列化會導致觀察到的字串輸出。
要修正此問題,只需照常返回資料(例如,字典或列表)。 FastAPI 會自動將其轉換為 JSON,並確保正確表示日期時間物件。
範例:
@app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] return d
輸出:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
如有必要,您可以在自訂Response物件中返回物件之前手動序列化該物件。將 media_type 設為 'application/json' 並自行編碼序列化資料。
範例:
import json @app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] json_str = json.dumps(d, indent=4, default=str) return Response(content=json_str.encode('utf-8'), media_type='application/json')
輸出:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
以上是為什麼 FastAPI 處理 JSON 序列化的方式與 Flask 不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!