Maison > développement back-end > Tutoriel Python > Comment puis-je éviter la double sérialisation lors du renvoi de données JSON dans FastAPI ?

Comment puis-je éviter la double sérialisation lors du renvoi de données JSON dans FastAPI ?

Mary-Kate Olsen
Libérer: 2024-11-28 07:50:12
original
813 Les gens l'ont consulté

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

Comment les données JSON sont gérées par FastAPI

Le piège de la double sérialisation

Lors du renvoi de données JSON dans FastAPI à l'aide de json.dumps(), évitez double sérialisation. FastAPI effectue une sérialisation automatique en coulisse, donc l'appel manuel de json.dumps() peut conduire à une sortie tronquée, visible sous forme de chaîne au lieu de JSON.

Options de renvoi des données JSON

Option 1 : sérialisation automatique

Renvoyez simplement les données sous forme de dictionnaires, de listes, etc. FastAPI les convertira automatiquement en Format compatible JSON en utilisant son jsonable_encoder intégré et enveloppez-le dans un JSONResponse. Cette approche garantit une sérialisation appropriée et la prise en charge de la sérialisation d'objets non sérialisables tels que les dates et heures.

from datetime import date

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

@app.get('/')
async def main():
    return data
Copier après la connexion

Option 2 : sérialisation personnalisée

Dans des scénarios spécifiques, la sérialisation manuelle peut être nécessaire. Dans ce cas, envisagez de renvoyer un objet Response personnalisé avec le type de média défini sur 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')
Copier après la connexion

Considérations supplémentaires

  • Personnalisation du code d'état : Utilisez l'attribut Response.status_code pour définir un code d'état personnalisé pour les réponses JSON.
  • JSON alternatif Encodeurs : Pensez à utiliser des encodeurs JSON tiers plus rapides comme Orjson pour améliorer les performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal