为什么python中的日期时间对象的json序列化对于日期时间对象不可用
为什么json序列化不适用于datetime对象。据我了解json序列化,任何对象的基本思想都可以调用
__str__
内置函数,然后对作为响应得到的对象进行urlencode。但是在日期时间的情况下,我得到以下错误
TypeError: datetime.datetime(2012, 5, 23, 18, 38, 23, 37566) is not JSON serializable
虽然有__str__
一种方法可以将已经可用的对象进行字符串化,但是似乎有意识地决定不这样做,为什么会这样呢?
-
不,它在
json
模块中无法正常工作。该模块为您提供了默认的编码器:json.JSONEncoder
。您需要扩展它以提供default
序列化对象的方法的实现。像这样:import json import datetime from time import mktime class MyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return int(mktime(obj.timetuple())) return json.JSONEncoder.default(self, obj) print json.dumps(obj, cls=MyEncoder)