如何将 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
我怎样才能避免这种情况?
原文由 Bilal Syed Hussain 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想将任意
enum.Enum
成员编码为 JSON,然后将其解码为相同的枚举成员(而不仅仅是枚举成员的value
属性),您可以通过编写一个customJSONEncoder
class, and a decoding function to pass as theobject_hook
argument tojson.load()
orjson.loads()
:as_enum
函数依赖于使用EnumEncoder
或与其行为相同的东西编码的 JSON。对
PUBLIC_ENUMS
的成员的限制是必要的,以避免恶意制作的文本被用来,例如,欺骗调用代码将私人信息(例如应用程序使用的密钥)保存到不相关的数据库字段,然后可以从那里公开它(请参阅 https://chat.stackoverflow.com/transcript/message/35999686#35999686 )。用法示例: