相关疑难解决方法(0)

json.dump 未调用 default 或 cls

尝试将包含日期时间对象的字典序列化为 json 的键。其他一些答案建议使用这些json.dump参数defaultcls但是,这些方法似乎都没有被调用。请参阅下面的 MWE。我缺少什么?

使用Default

from datetime import datetime
import json

def default(obj):
    print("Default Called")
    if isinstance(obj, (datetime, date)):
        return obj.isoformat()

test = {datetime(1970, 1, 1, 8, 0, 0): 10}

with open("output.json", "w") as fo:
    json.dump(test, fo, default=default)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "test.py", line 21, in <module>
    json.dump(test, fo, default=default)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 179, in dump
    for chunk in iterable:
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/encoder.py", line 431, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File …
Run Code Online (Sandbox Code Playgroud)

python datetime json python-3.x

5
推荐指数
1
解决办法
9689
查看次数

标签 统计

datetime ×1

json ×1

python ×1

python-3.x ×1