如何序列化 PythonEnum
成员到 JSON,以便我可以将生成的 JSON 反序列化回 Python 对象?
例如,这段代码:
from enum import Enum
import json
class Status(Enum):
success = 0
json.dumps(Status.success)
结果出现错误:
TypeError: <Status.success: 0> is not JSON serializable
我怎样才能避免这种情况?
我知道这已经过时了,但我觉得这会对人们有所帮助。我刚刚经历了这个确切的问题,发现您是否使用字符串枚举,将枚举声明为str
几乎适用于所有情况:
import json
from enum import Enum
class LogLevel(str, Enum):
DEBUG = 'DEBUG'
INFO = 'INFO'
print(LogLevel.DEBUG)
print(json.dumps(LogLevel.DEBUG))
print(json.loads('"DEBUG"'))
print(LogLevel('DEBUG'))
将输出:
LogLevel.DEBUG
"DEBUG"
DEBUG
LogLevel.DEBUG
如您所见,加载 JSON 会输出字符串DEBUG
但它很容易转换回 LogLevel 对象。如果您不想创建自定义 JSONEncoder,这是一个不错的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)