Maison >développement back-end >Tutoriel Python >Comment convertir des objets Datetime entre Python et JavaScript à l'aide de JSON

Comment convertir des objets Datetime entre Python et JavaScript à l'aide de JSON

DDD
DDDoriginal
2024-10-20 19:15:02658parcourir

How to Convert Datetime Objects Between Python and JavaScript Using JSON

Conversion d'objets Datetime entre Python et JavaScript à l'aide de JSON

Dans le domaine de la sérialisation et de la désérialisation des données, l'échange d'objets datetime entre Python et JavaScript via JSON peut poser un défi. Voyons comment nous pouvons résoudre ce problème et présentons la meilleure approche pour gérer cette conversion.

Sérialisation en Python

Pour sérialiser un objet datetime.datetime de Python vers JSON, nous pouvons utiliser la fonction json.dumps() intégrée de Python. Cependant, pour garantir une gestion correcte des objets datetime, nous devons fournir un paramètre « par défaut » personnalisé. Voici un exemple d'extrait de code :

<code class="python">import datetime
import json

date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)

json_string = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_string)  # Output: "2010-04-20T20:08:21.634121"</code>

Cette approche garantit que les objets datetime sont sérialisés au format ISO 8601, qui est largement pris en charge pour la représentation de la date et de l'heure.

Désérialisation en JavaScript

Si vous utilisez une bibliothèque JavaScript qui gère l'analyse JSON, telle que JSON.parse(), elle désérialisera automatiquement la chaîne ISO 8601 en un objet Date. Voici à quoi cela ressemblerait en JavaScript :

<code class="js">const json_object = JSON.parse(json_string);
const js_date = new Date(json_object);  // Converted to JavaScript Date object</code>

Gestionnaire par défaut complet

Pour une approche plus complète, envisagez d'utiliser une fonction de gestionnaire par défaut qui gère un plus large éventail de types d'objets pendant la sérialisation :

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

En utilisant cette approche, vous pouvez gérer sans effort une variété de types d'objets pendant la sérialisation.

Remarques supplémentaires

  • ISO 8601 est une norme permettant de représenter les dates et les heures dans un format lisible par machine.
  • La sortie du gestionnaire personnalisé doit correspondre au format attendu par le désérialiseur.
  • Pour en savoir plus Pour plus d'informations, reportez-vous à la documentation json.dumps() de Python et JSON.parse() de JavaScript.

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