Maison  >  Article  >  interface Web  >  Comment gérer les objets Datetime dans JSON Exchange entre Python et JavaScript

Comment gérer les objets Datetime dans JSON Exchange entre Python et JavaScript

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 17:30:30487parcourir

How to Handle Datetime Objects in JSON Exchange Between Python and JavaScript

Gestion des objets datetime dans l'échange JSON entre Python et JavaScript

Lors de l'échange d'objets datetime entre Python et JavaScript à l'aide de JSON, il existe un défi dû aux différentes manières dont les deux langues représentent les dates et les heures. Cet article présente les meilleures pratiques pour cette tâche.

Conversion Python vers JavaScript

Pour sérialiser un objet datetime.datetime en Python pour la transmission JSON, utilisez l'option ' paramètre default' de la fonction json.dumps avec une fonction de gestionnaire de date personnalisée :

<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)</code>

Cette fonction renvoie le format ISO 8601 de l'objet datetime, qui est une norme largement acceptée pour la représentation de la date et de l'heure.

Conversion JavaScript vers Python

En JavaScript, vous pouvez désérialiser la chaîne JSON reçue avec une fonction de relance de date personnalisée. Cette fonction analysera la chaîne ISO 8601 et reconstruira l'objet datetime :

<code class="javascript">let date_reviver = date => new Date(date);
JSON.parse(json_string, date_reviver);</code>

Gestionnaire de date complet

Pour une approche plus complète, vous pouvez créer une date personnalisée fonction de gestionnaire qui couvre plusieurs types de données :

<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>

Cette fonction garantit que différents types d'objets sont traités de manière appropriée lors de la sérialisation.

Remarques supplémentaires

  • Le format ISO 8601 utilisé pour les objets datetime est ISO 8601.
  • Cette approche peut également gérer les objets date (datetime.date) en Python.

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