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

DDD
Libérer: 2024-10-20 19:15:02
original
563 Les gens l'ont consulté

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

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!