python Enum json serializable
时间: 2024-10-22 11:18:03 浏览: 11
在Python中,`enum`(枚举)是一种常用的数据类型,用于创建具有预定义常量的对象。然而,标准的`enum.Enum`并不直接支持JSON序列化(即转换为字典或字符串以便在网络上传输)。如果你想让`enum`类型的值能够被`json.dumps()`等函数处理,可以自定义一些方法来实现这个功能。
一种常见的做法是通过继承`Enum`并实现`__str__`、`__repr__`和`to_dict`方法,例如:
```python
import enum
import json
class CustomEnum(enum.Enum):
VALUE1 = "Value1"
VALUE2 = "Value2"
def to_dict(self):
return self.name
# 实现序列化
def enum_to_json(obj):
if isinstance(obj, CustomEnum):
return obj.value
elif isinstance(obj, (list, tuple)):
return [enum_to_json(i) for i in obj]
else:
return obj
custom_enum_instance = CustomEnum.VALUE1
json_serialized = json.dumps(custom_enum_instance, default=enum_to_json)
```
现在,当你尝试将`CustomEnum`实例转换为JSON时,它会按照`name`属性来序列化。如果你有其他需要,还可以进一步定制`to_dict`方法。
阅读全文