|
发表于 2018-9-18 15:23:41
|
显示全部楼层
最初的答案符合MongoDB“date”字段的表示方式:
{"$date": 1506816000000}
________________________________________
当您使用mongoengine(每条评论)并且pymongo是一个依赖项时,pymongo有内置的实用程序来帮助json序列化:http://api.mongodb.org/python/1.10.1/api/bson/json_util.html
用法示例(序列化):
from bson import json_util
import json
json.dumps(anObject, default=json_util.default)
用法示例(反序列化):
json.loads(aJsonString, object_hook=json_util.object_hook)
________________________________________
Django提供了一个本地DjangoJSONEncoder序列化器来处理这种正确的。
请参阅https://docs.djangoproject.com/e ... /#djangojsonencoder
from django.core.serializers.json import DjangoJSONEncoder
return json.dumps(
item,
sort_keys=True,
indent=1,
cls=DjangoJSONEncoder
)
我注意到DjangoJSONEncoder和使用这样的自定义Encodder之间的一个区别default:
def default(o):
if type(o) is datetime.date or type(o) is 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", # DjangoJSONEncoder
"last_login": "2018-08-03T10:51:42.990239", # default
因此,在某些情况下,您可能需要小心。
|
|