Python 将带有datetime键的字典转储到json文件生成TypeError
我创建了一个字典,并试图将其作为json文件转储,但由于键的类型是datetime,所以出现了问题 在我的研究中,我找到了价值观的解决方案,但没有找到关键点的解决方案 以下是我目前的代码:Python 将带有datetime键的字典转储到json文件生成TypeError,python,json,datetime,dictionary,Python,Json,Datetime,Dictionary,我创建了一个字典,并试图将其作为json文件转储,但由于键的类型是datetime,所以出现了问题 在我的研究中,我找到了价值观的解决方案,但没有找到关键点的解决方案 以下是我目前的代码: import json from datetime import date, datetime d = { datetime.now(): { 'name' : 'Foo' } } def myconverter(o): if isinstance(o, datet
import json
from datetime import date, datetime
d = {
datetime.now(): {
'name' : 'Foo'
}
}
def myconverter(o):
if isinstance(o, datetime):
return o.isoformat()
print(d)
print(json.dumps(d, default=myconverter, indent=4))
错误消息:
TypeError:键必须是str、int、float、bool或None,而不是datetime
顺便说一下,这是一个例子,原始字典确实需要按日期时间进行索引。
如果真的不可能,我会考虑使用时间戳,但是我更喜欢避免,因为它是不可读的, 如果你想把原来的字典保留为<代码>日期时间< /Cord>对象作为关键字,只需创建一个拷贝,使用<代码>日期时间>代码>序列化,只用于存储:
d={
datetime.now(){
“name”:“Foo”
}
}
序列化的_d={k.isoformat():v表示k,v表示d.items()}
打印(json.dumps(序列化,缩进=4))
>>> {
“2019-12-23T22:56:15.768500”:{
“名称”:“Foo”
}
}
请包含实际的错误消息。你能分享更多关于你的数据的信息吗?我特别好奇导致在字典中使用datetime对象作为键的情况。尝试分析加密货币交换数据-更具体地说,使您的数据像一个时间序列?您可以说是的。问题是,我正在尝试使用给定的蜡烛日期时间作为键来存储从api获取的数据,因为可以多次获取同一蜡烛的新版本,而它的not closedJSON键必须是JSON字符串日期索引时间。主要目标是将数据类型更改为仅存储,因为为dictionaryedited@luix10存储datetime值时看起来很简单,为了存储目的,您不能将其保存在json
中,作为datetime
对象,它必须是字符串
@AMC我在使用他的代码时得到TypeError
,因此,这意味着default
没有运行。json.dumps(d,default=myconverter,indent=4)
引发TypeError
,因为datetime
对象不能用作json
中的键,它需要先序列化,json.dumps
中的default
参数没有任何作用,功能myconverter
未运行@AMC@Marcos哦,是的,我知道。我对这个答案的第一个评论是对OP写作的回应,主要目的是将数据类型更改为只存储。。。因为在我看来,你的代码就是这么做的。