Lorsque vous travaillez avec JSON, vous pouvez rencontrer le besoin de transférer des objets datetime entre Python et JavaScript. La sérialisation de tels objets peut être délicate. Cet article explore les meilleures pratiques pour gérer les objets datetime dans la communication JSON.
Pour sérialiser un objet datetime.datetime en Python, nous pouvons utiliser la fonction json.dumps avec la valeur par défaut paramètre. Ce paramètre nous permet de spécifier un gestionnaire personnalisé pour convertir l'objet datetime dans un format sérialisable JSON.
<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"'</code>
La méthode isoformat() de l'objet datetime renvoie une représentation sous forme de chaîne au format ISO 8601, qui est universellement reconnu.
En JavaScript, vous pouvez désérialiser la chaîne datetime sérialisée en un objet Date à l'aide de la fonction Date.parse() :
<code class="javascript">const dateString = '"2010-04-20T20:08:21.634121"'; const date = new Date(Date.parse(dateString)); // Output: Thu Apr 20 2010 20:08:21 GMT-0400 (Eastern Daylight Time)</code>
Pour des scénarios plus complexes, vous aurez peut-être besoin d'une fonction de gestionnaire par défaut plus complète :
<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>
Ce gestionnaire peut gérer plusieurs types d'objets et fournit des messages d'erreur plus informatifs. N'oubliez pas de gérer les objets date et datetime selon vos besoins.
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!