栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何克服“ datetime.datetime无法JSON序列化”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何克服“ datetime.datetime无法JSON序列化”?

更新于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


用法示例(序列化):

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

因此,在某些情况下,您可能需要注意这一点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号