我有一个基本的口述如下:
sample = {}
sample['title'] = "String"
sample['somedate'] = somedatetimehere
当我尝试执行jsonify(sample)
时,我得到:
TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable
我该怎么做才能使我的字典样本能够克服上面的错误?
注意:尽管可能不相关,但字典是从MongoDB
中检索记录生成的,其中,当我打印出字符串(Sample['somedate'])
时,输出为2012-08-08 21:46:24.862000
。
最初的回答采用了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_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/en/dev/topics/serialization/#djangojsonencoder
from django.core.serializers.json import DjangoJSONEncoder
return json.dumps(
item,
sort_keys=True,
indent=1,
cls=DjangoJSONEncoder
)
我注意到DjangoJsonEncoder
和使用自定义默认值
之间的一个区别,如下所示:
import datetime
import json
def 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", # DjangoJSONEncoder
"last_login": "2018-08-03T10:51:42.990239", # default
所以,在某些情况下,你可能需要小心。
刚刚开始使用scala和spark来运行这个简单的程序:
当我的应用程序安装到Android L preview时,它会失败,出现错误: install_failed_no_matching_abis。 我的应用程序只使用arm库,使用库的功能在x86上被禁用。它在Android L之前工作得很完美,但现在我连它都装不上了。如何为我的应用程序禁用此错误?
问题内容: 我已经在其中一个视频教程中看到了下面的代码。它可以很好地执行,但是当我尝试在系统中执行时,它可以很好地编译,但是我遇到了运行时错误, 有人可以指导我这段代码有什么问题以及如何纠正吗? 提前致谢! 问题答案: __当您尝试访问数组中不存在的索引处的元素时,将发生 ArrayIndexOutOfBoundsException 。 例如:假设int a [] = {2,4,5,10,3}是一
问题内容: 我实现了一个ajax轮询脚本,该脚本每10秒在服务器Controller中调用一次操作。通过响应,我替换了的内容: 这是通过 https 完成的。经过一段时间的“空闲”,IE会显示以下消息: 该页面正在访问不受其控制的信息。这带来了安全风险。你想继续吗? 如果用户单击“ 是” ,则页面将重定向到仅显示响应的页面。如果用户单击“ 否” ,则什么都不会发生,但是不会刷新容器。 我知道我可以
问题内容: 我在项目中使用了多个Android库和模块。每个都有自己的v4.Support库。我正在获取 java.util.zip.ZipException:重复条目 。当我在项目中搜索重复的类文件时,由于每个库中都有多个v4.support lib,这些类有多个文件。我知道这个问题在这里已经被问过很多遍了,但对我来说却无济于事。 我的问题是:如何删除这些多个v4.support文件?我只想将此
我正在使用spark 2.4.2读取包含600条记录的csv。最后100条记录有大量数据。我遇到的问题是, 我已经增加了到2g(最大允许设置)和火花驱动程序内存到1g,能够处理更多的记录,但仍然不能处理csv中的所有记录。 我试着翻页600条记录。e、 对于6个分区,我可以在每个分区处理100条记录,但由于最后100条记录太多,因此会发生缓冲区溢出。 在这种情况下,最后100条记录很大,但这可能是