gpt4 book ai didi

python - 将枚举成员序列化为 JSON

转载 作者:IT老高 更新时间:2023-10-28 12:44:20 30 4
gpt4 key购买 nike

如何将 Python Enum 成员序列化为 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,这是一个不错的选择。

关于python - 将枚举成员序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481852/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com