Maison > interface Web > js tutoriel > 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
Libérer: 2024-10-19 17:29:30
original
722 Les gens l'ont consulté

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

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

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

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!

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