Heim > Backend-Entwicklung > Python-Tutorial > Warum handhabt FastAPI die JSON-Serialisierung anders als Flask?

Warum handhabt FastAPI die JSON-Serialisierung anders als Flask?

DDD
Freigeben: 2024-12-07 07:40:16
Original
267 Leute haben es durchsucht

Why Does FastAPI Handle JSON Serialization Differently Than Flask?

Warum gibt FastAPI JSON-Daten anders zurück als Flask?

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.

Lösung 1: Einfache Rückgabe für JSON-Konvertierung

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
Nach dem Login kopieren

Ausgabe:

[
  {
    "User": "a",
    "date": "2023-01-09",
    "count": 1
  },
  {
    "User": "b",
    "date": "2023-01-09",
    "count": 2
  }
]
Nach dem Login kopieren
Nach dem Login kopieren

Lösung 2: Benutzerdefinierte Antwort für explizite JSON-Serialisierung

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')
Nach dem Login kopieren

Ausgabe:

[
  {
    "User": "a",
    "date": "2023-01-09",
    "count": 1
  },
  {
    "User": "b",
    "date": "2023-01-09",
    "count": 2
  }
]
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage