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

Mary-Kate Olsen
Libérer: 2024-10-20 19:12:02
original
401 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!