ohlc={58072071: {datetime.datetime(2021, 3, 26, 23, 20):
{'high': 179.0, 'low': 179.0, 'open': 179.0, 'close': 179.0,
'volume': 2354}}}
如何将本字典写入 JSON 文件?
当我将其转储到 JSON 文件时出现此错误
TypeError(f'keys must be str, int, float, bool or None, '
TypeError: keys must be str, int, float, bool or None, not datetime
答案 0 :(得分:0)
正如我在评论中所说,问题不是由于存在嵌套字典,而是因为它们包含的数据未映射到 json
模块中的 table 中显示的 JSON 对象文档。
这是一种使用 datetime.strftime()
函数自动将它们转换为字符串的方法。
from datetime import datetime
import json
DATE_FMT = '%Y-%m-%d %H:%M'
def decode_dict(d):
result = {}
for key, value in d.items():
if isinstance(key, datetime):
key = datetime.strftime(key, DATE_FMT)
if isinstance(value, datetime):
value = datetime.strftime(value, DATE_FMT)
elif isinstance(value, dict):
value = decode_dict(value) # Recursive call.
result.update({key: value})
return result
if __name__ == '__main__':
ohlc = {58072071: {datetime(2021, 3, 26, 23, 20):
{'high': 179.0, 'low': 179.0, 'open': 179.0, 'close': 179.0,
'volume': 2354}}}
print(json.dumps(decode_dict(ohlc)))
输出:
{"58072071": {"2021-03-26 23:20":
{"high": 179.0, "low": 179.0, "open": 179.0, "close": 179.0,
"volume": 2354}}}
}