原始答案适应了MongoDB“日期”字段表示为:
{"$date": 1506816000000}
如果您希望使用通用的Python解决方案序列化为
datetimejson,请查看@jjmontes的答案以获取无需依赖项的快速解决方案。
当您使用mongoengine(每个注释)并且pymongo是一个依赖项时,pymongo具有内置的实用程序来帮助进行json序列化:http
://api.mongodb.org/python/1.10.1/api/bson/json_util.html
from bson import json_utilimport jsonjson.dumps(anObject, default=json_util.default)
用法示例(反序列化):
json.loads(aJsonString, object_hook=json_util.object_hook)
Django的
Django提供了本机
DjangoJSONEnprer序列化程序,可以正确处理这种情况。
参见https://docs.djangoproject.com/en/dev/topics/serialization/#djangojsonenprer
from django.core.serializers.json import DjangoJSonEnprerreturn json.dumps( item, sort_keys=True, indent=1, cls=DjangoJSONEnprer)
我注意到
DjangoJSONEnprer和使用这样的自定义之间的一个区别
default:
import datetimeimport jsondef default(o): if isinstance(o, (datetime.date, datetime.datetime)): return o.isoformat()return json.dumps( item, sort_keys=True, indent=1, default=default)
是Django剥离了一些数据:
"last_login": "2018-08-03T10:51:42.990", # DjangoJSonEnprer "last_login": "2018-08-03T10:51:42.990239", # default
因此,在某些情况下,您可能需要注意这一点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)