Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich eine doppelte Serialisierung vermeiden, wenn ich JSON-Daten in FastAPI zurückgebe?

Wie kann ich eine doppelte Serialisierung vermeiden, wenn ich JSON-Daten in FastAPI zurückgebe?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-28 07:50:12757Durchsuche

How Can I Avoid Double Serialization When Returning JSON Data in FastAPI?

Wie JSON-Daten von FastAPI verarbeitet werden

Die Gefahr der doppelten Serialisierung

Vermeiden Sie die Rückgabe von JSON-Daten in FastAPI mit json.dumps() doppelte Serialisierung. FastAPI führt im Hintergrund eine automatische Serialisierung durch, sodass der manuelle Aufruf von json.dumps() zu einer verstümmelten Ausgabe führen kann, die als Zeichenfolge anstelle von JSON sichtbar ist.

Optionen für die Rückgabe von JSON-Daten

Option 1: Automatische Serialisierung

Daten einfach als Wörterbücher, Listen usw. zurückgeben. FastAPI konvertiert sie automatisch in JSON-kompatibles Format mithilfe des integrierten jsonable_encoder erstellen und in eine JSONResponse einschließen. Dieser Ansatz gewährleistet eine ordnungsgemäße Serialisierung und unterstützt die Serialisierung nicht serialisierbarer Objekte wie Datums- und Uhrzeitangaben.

from datetime import date

data = [{"User": "a", "date": date.today(), "count": 1}]

@app.get('/')
async def main():
    return data

Option 2: Benutzerdefinierte Serialisierung

In bestimmten Szenarien kann eine manuelle Serialisierung erforderlich sein notwendig sein. Erwägen Sie in diesem Fall die Rückgabe eines benutzerdefinierten Antwortobjekts mit dem Medientyp „application/json“.

import json

@app.get('/')
async def main():
    json_str = json.dumps(data, indent=4, default=str)
    return Response(content=json_str, media_type='application/json')

Zusätzliche Überlegungen

  • Anpassen des Statuscodes: Verwenden Sie das Attribut Response.status_code, um einen benutzerdefinierten Statuscode für JSON-Antworten festzulegen.
  • Alternatives JSON Encoder: Erwägen Sie die Verwendung schnellerer JSON-Encoder von Drittanbietern wie Orjson, um die Leistung zu verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich eine doppelte Serialisierung vermeiden, wenn ich JSON-Daten in FastAPI zurückgebe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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