Maison  >  Article  >  développement back-end  >  Comment sérialiser et désérialiser en toute sécurité des objets Datetime en JSON entre Python et JavaScript ?

Comment sérialiser et désérialiser en toute sécurité des objets Datetime en JSON entre Python et JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 19:12:02403parcourir

How to Safely Serialize and Deserialize Datetime Objects in JSON between Python and JavaScript?

Sérialisation et désérialisation d'objets datetime entre Python et JavaScript avec JSON

Lorsque vous travaillez avec JSON, vous pouvez rencontrer le besoin de transférer des objets datetime entre Python et JavaScript. La sérialisation de tels objets peut être délicate. Cet article explore les meilleures pratiques pour gérer les objets datetime dans la communication JSON.

Sérialisation en Python

Pour sérialiser un objet datetime.datetime en Python, nous pouvons utiliser la fonction json.dumps avec la valeur par défaut paramètre. Ce paramètre nous permet de spécifier un gestionnaire personnalisé pour convertir l'objet datetime dans un format sérialisable JSON.

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)
json.dumps(datetime.datetime.now(), default=date_handler)
# Output: '"2010-04-20T20:08:21.634121"'</code>

La méthode isoformat() de l'objet datetime renvoie une représentation sous forme de chaîne au format ISO 8601, qui est universellement reconnu.

Désérialisation en JavaScript

En JavaScript, vous pouvez désérialiser la chaîne datetime sérialisée en un objet Date à l'aide de la fonction Date.parse() :

<code class="javascript">const dateString = '"2010-04-20T20:08:21.634121"';
const date = new Date(Date.parse(dateString));
// Output: Thu Apr 20 2010 20:08:21 GMT-0400 (Eastern Daylight Time)</code>

Gestionnaire par défaut complet

Pour des scénarios plus complexes, vous aurez peut-être besoin d'une fonction de gestionnaire par défaut plus complète :

<code class="python">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))</code>

Ce gestionnaire peut gérer plusieurs types d'objets et fournit des messages d'erreur plus informatifs. N'oubliez pas de gérer les objets date et datetime selon vos besoins.

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!

Déclaration:
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