Préserver la continuité Datetime entre Python et JavaScript via JSON
Avant de nous aventurer dans la solution, comprenons d'abord le problème. Nous avons un objet datetime.datetime en Python qui doit être sérialisé et envoyé à JavaScript via JSON. À son arrivée, JavaScript doit être capable de le désérialiser en un objet datetime sans aucune distorsion.
Pour résoudre cette énigme, le paramètre polyvalent « par défaut » de JSON dans json.dumps fournit une solution. Ce paramètre nous permet de définir un gestionnaire de sérialisation personnalisé pour nos objets datetime.
Le gestionnaire suivant gère parfaitement le processus de sérialisation :
<code class="python">date_handler = lambda obj: ( obj.isoformat() if isinstance(obj, (datetime.datetime, datetime.date)) else None )</code>
Une fois appliqué, ce gestionnaire convertit les objets datetime au format ISO 8601. pendant la sérialisation :
<code class="python">json.dumps(datetime.datetime.now(), default=date_handler) '"2010-04-20T20:08:21.634121"'</code>
Pour les scénarios plus complexes, un gestionnaire complet est recommandé :
<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 génère également un message d'erreur amélioré avec le type et la valeur de l'objet pour un meilleur débogage. L'inclusion d'un type de date garantit que les dates sont également traitées avec élégance.
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!