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

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 17:29:30627parcourir

How to Handle Datetime Objects in JSON Conversions Between Python and JavaScript?

Conversion datetime JSON entre Python et JavaScript

Lors du transfert de données entre Python et JavaScript à l'aide de JSON, une attention particulière doit être accordée à la gestion des objets datetime. Cet article explore l'approche optimale pour sérialiser des objets datetime en Python et les désérialiser en JavaScript.

Sérialisation en Python

Utilisez le paramètre par défaut dans la fonction json.dumps de Python pour gérer la sérialisation datetime :

<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"' (ISO 8601 format)</code>

Désérialisation en JavaScript

En JavaScript, utilisez la fonction JSON.parse et gérez la désérialisation avec une fonction de reviver personnalisée :

<code class="javascript">let date = JSON.parse(jsonString, (key, value) => {
  if (typeof value === 'string' && value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/)) {
    return new Date(value);
  }
  return value;
});</code>

Gestionnaire complet par défaut en Python

Une fonction de gestionnaire par défaut plus inclusive peut être définie pour s'adapter à différents types de données :

<code class="python">import datetime

def handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    elif isinstance(obj, datetime.date):
        return str(obj)  # Convert to string for date objects
    elif isinstance(obj, ...):
        return ...  # Handle other types as needed
    else:
        raise TypeError('Cannot serialize object of type {} with value {}'.format(type(obj), repr(obj)))</code>

Gestionnaire par défaut amélioré

Le gestionnaire amélioré comprend :

  • Gestion des objets datetime et date
  • Sortie du type et de la valeur lors de la rencontre d'un objet non sérialisable

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