我有一个基本的字典如下:
sample = {}
sample['title'] = "String"
sample['somedate'] = somedatetimehere
当我尝试做 jsonify(sample)
我得到:
TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable
我该怎么做才能使我的字典样本能够克服上述错误?
注意: 虽然可能不相关,但字典是通过检索 mongodb
2012-08-08 21:46:24.862000
str(sample['somedate'])
生成的.
原文由 Rolando 发布,翻译遵循 CC BY-SA 4.0 许可协议
2018 年更新
原始答案适应了 MongoDB“日期”字段的表示方式:
{"$date": 1506816000000}
如果您想要一个通用的 Python 解决方案来将
datetime
序列化为 json,请查看 @jjmontes 的答案 以获得不需要依赖项的快速解决方案。当您使用 mongoengine(根据评论)并且 pymongo 是一个依赖项时,pymongo 具有内置实用程序来帮助进行 json 序列化:
http://api.mongodb.org/python/1.10.1/api/bson/json_util.html
示例用法(序列化):
示例用法(反序列化):
姜戈
Django 提供了一个原生的
DjangoJSONEncoder
序列化器,可以正确处理这种情况。请参阅 https://docs.djangoproject.com/en/dev/topics/serialization/#djangojsonencoder
我注意到
DjangoJSONEncoder
和使用自定义default
之间的一个区别,如下所示:是 Django 剥离了一些数据:
因此,在某些情况下,您可能需要注意这一点。