Maison >interface Web >js tutoriel >Comment gérer les objets Datetime dans JSON Exchange entre Python et 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
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!