将 Enum 成员序列化为 JSON

2024-02-12

如何序列化 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(使用前将#替换为@)

将 Enum 成员序列化为 JSON 的相关文章

随机推荐