编辑
此问题与 How to overcome "datetime.datetime not JSON serializable"? 不重复 因为,虽然这是同一个问题,但它提供了一个特定的上下文:Django。因此,有些解决方案适用于此处,但不适用于所提供链接的问题。
原始问题
我关注了How to overcome "datetime.datetime not JSON serializable"?但这无济于事
我试过这段代码
>>> import datetime
>>> a =datetime.date(2014, 4, 25)
>>> from bson import json_util
>>> b = json.dumps(a,default = json_util.default)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 250, in dumps
sort_keys=sort_keys, **kw).encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/home/.../python2.7/site-packages/bson/json_util.py", line 256, in default
raise TypeError("%r is not JSON serializable" % obj)
TypeError: datetime.date(2014, 4, 25) is not JSON serializable
有人可以帮助我使用 datetime.date
序列化器和反序列化器吗?
最佳答案
你也可以这样做:
def date_handler(obj):
return obj.isoformat() if hasattr(obj, 'isoformat') else obj
print json.dumps(data, default=date_handler)
来自 here .
更新根据 J.F.Sebastian 评论
def date_handler(obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
else:
raise TypeError
print json.dumps(data, default=date_handler)
关于python - datetime.date(2014, 4, 25) 在 Django 中不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285558/