Gestion des objets datetime en JSON entre Python et JavaScript
Lors de l'échange de données entre Python et JavaScript, il est courant de rencontrer des objets datetime. Pour garantir une sérialisation et une désérialisation transparentes de ces objets, diverses approches peuvent être utilisées.
Une méthode recommandée consiste à utiliser le paramètre « par défaut » de json.dumps en Python pour gérer les objets datetime. Ce paramètre permet de spécifier une fonction de gestionnaire qui convertit les objets datetime dans un format sérialisable.
from datetime import datetime
date_handler = lambda obj: (
obj.isoformat()
if isinstance(obj, (datetime.datetime, datetime.date))
else None
)
json_str = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_str)
Cette approche garantit que les objets datetime Python sont convertis au format ISO 8601, qui est standardisé et reconnu par JavaScript.
"2010-04-20T20:08:21.634121"
Alternativement, une fonction de gestionnaire par défaut plus complète peut être définie pour gérer divers objets. types :
def handler(obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
elif isinstance(obj, ...):
return ...
else:
raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (type(obj), repr(obj))
Cette fonction vérifie la présence d'un attribut 'isoformat', qui est courant dans les objets datetime et le convertit en un format sérialisable. De plus, il gère d'autres types d'objets selon les besoins.
En tirant parti de ces techniques, les objets datetime peuvent être efficacement sérialisés à partir de Python et désérialisés en JavaScript, facilitant ainsi un échange fluide de données entre les deux langages.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3