Pendekatan Salah:
Apabila mensiri objek menggunakan json.dumps () sebelum mengembalikannya dalam FastAPI, JSON akan disirikan dua kali. Siri berganda ini menghasilkan output rentetan yang diperhatikan.
Untuk membetulkannya, cuma kembalikan data seperti biasa (cth., dicts atau lists). FastAPI akan menukarnya secara automatik kepada JSON, memastikan objek datetime diwakili dengan sewajarnya.
Contoh:
@app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] return d
Output:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
Jika perlu, anda boleh mensiri objek secara manual sebelum mengembalikannya dalam objek Respons tersuai. Tetapkan media_type kepada 'application/json' dan enkodkan data bersiri sendiri.
Contoh:
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')
Output:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
Atas ialah kandungan terperinci Mengapa FastAPI Mengendalikan Pensirilan JSON Berbeza Daripada Flask?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!