【发布时间】:2012-05-30 02:06:34
【问题描述】:
为什么 json 序列化不适用于 datetime 对象。据我了解 json 序列化,任何对象的基本思想都可以调用 __str__ 内置函数,然后对作为响应的对象进行 urlencode。但是在日期时间的情况下,我会收到以下错误
TypeError: datetime.datetime(2012, 5, 23, 18, 38, 23, 37566) is not JSON serializable
虽然有__str__ 即一种对已经可用的对象进行字符串化的方法,但似乎有意识地决定不这样做,为什么会这样?
【问题讨论】:
-
您误解了 json 的工作原理。它与 str 方法无关。 JSON 没有日期时间类型,周期,因此不可能在 JSON 中无损编码日期时间,而在接收端没有某种特殊逻辑。因此,该库(逻辑上)通过转换为 Unix 时间戳或 ISO 日期字符串或其他内容并明确说明转换是必要的,让您自己完成。
-
@TylerEaves 这一点都不合逻辑。可以将日期时间无损编码为字符串或 int,并且许多用例需要从 dict 转换为 json,再到 dict 永远不会离开 python 生态系统,但是 json 模块无法在没有自定义的情况下处理这种情况日期时间处理程序?真的?!查看有关该主题的大量 stackoverflow 问题,我想说我并不孤单。
标签: python json serialization simplejson