Falscher Ansatz:
Beim Serialisieren von Objekten mit json.dumps () Bevor sie in FastAPI zurückgegeben werden, wird der JSON zweimal serialisiert. Diese doppelte Serialisierung führt zur beobachteten Zeichenfolgenausgabe.
Um dies zu korrigieren, geben Sie einfach Daten wie gewohnt zurück (z. B. Diktate oder Listen). FastAPI konvertiert es automatisch in JSON und stellt so sicher, dass Datetime-Objekte ordnungsgemäß dargestellt werden.
Beispiel:
@app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] return d
Ausgabe:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
Wenn Bei Bedarf können Sie das Objekt manuell serialisieren, bevor Sie es in einem benutzerdefinierten Antwortobjekt zurückgeben. Setzen Sie den Medientyp auf „application/json“ und kodieren Sie die serialisierten Daten selbst.
Beispiel:
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')
Ausgabe:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
Das obige ist der detaillierte Inhalt vonWarum handhabt FastAPI die JSON-Serialisierung anders als Flask?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!