Pourquoi la sérialisation json de datetime objets en python ne pas fonctionner hors de la boîte pour objets datetime

Pourquoi la sérialisation json fonctionne pas pour les objets datetime . Comme je comprends la sérialisation json l'idée de base pour n'importe quel objet peut appeler la __str__ builtin la fonction, puis urlencode l'objet que vous obtenez une réponse. Mais dans le cas de datetime j'obtiens l'erreur suivante

TypeError: datetime.datetime(2012, 5, 23, 18, 38, 23, 37566) is not JSON serializable

bien qu'il y est un __str__ je.e un moyen de stringifying l'objet est déjà disponible , Mais il semble comme une décision consciente de ne pas le faire , pourquoi serait-ce le cas?

  • Vous êtes mal à comprendre comment json œuvres. Il n'a rien à voir avec le str méthode. JSON n'a pas de date-type de temps, période, il est donc impossible de sans perte d'encoder une date-heure en JSON, sans une quelconque logique sur l'extrémité de réception. Ainsi, la bibliothèque (logiquement) fait de vous le faire vous-même par la conversion d'un timestamp Unix ou ISO chaîne de date ou quelque chose et de le rendre plus explicite le fait que la conversion est nécessaire.
  • C'est tout sauf logique. Il est possible sans perte de coder un datetime pour un string ou int, et de nombreux cas d'utilisation que l'appel à la conversion à partir de dict, json, dict à nouveau ne jamais laisser le python de l'écosystème, mais le json module ne peut pas gérer ce cas sans personnalisé datetime gestionnaire? Vraiment?! En regardant le grand nombre de stackoverflow questions sur le sujet, je dirais que je ne suis pas seul dans mon incrédulité.
InformationsquelleAutor dusual | 2012-05-23