Maison  >  Article  >  développement back-end  >  Comment préserver la continuité date/heure entre Python et JavaScript via JSON ?

Comment préserver la continuité date/heure entre Python et JavaScript via JSON ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-20 19:13:30559parcourir

How to Preserve Datetime Continuity Between Python and JavaScript via JSON?

Préserver la continuité Datetime entre Python et JavaScript via JSON

Avant de nous aventurer dans la solution, comprenons d'abord le problème. Nous avons un objet datetime.datetime en Python qui doit être sérialisé et envoyé à JavaScript via JSON. À son arrivée, JavaScript doit être capable de le désérialiser en un objet datetime sans aucune distorsion.

Pour résoudre cette énigme, le paramètre polyvalent « par défaut » de JSON dans json.dumps fournit une solution. Ce paramètre nous permet de définir un gestionnaire de sérialisation personnalisé pour nos objets datetime.

Le gestionnaire suivant gère parfaitement le processus de sérialisation :

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)</code>

Une fois appliqué, ce gestionnaire convertit les objets datetime au format ISO 8601. pendant la sérialisation :

<code class="python">json.dumps(datetime.datetime.now(), default=date_handler)
'"2010-04-20T20:08:21.634121"'</code>

Pour les scénarios plus complexes, un gestionnaire complet est recommandé :

<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 génère également un message d'erreur amélioré avec le type et la valeur de l'objet pour un meilleur débogage. L'inclusion d'un type de date garantit que les dates sont également traitées avec élégance.

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