在 Python 中将枚举转换为 JSON
How to convert an Enum to JSON in Python
要将枚举转换为 JSON,请在声明枚举类时从str
或类扩展,例如. 然后,您将能够使用该方法将枚举成员直接序列化为 json
。int
class Color(str, Enum):
json.dumps()
主程序
from enum import Enum import json # 👇️ subclass str class first, then Enum class Color(str, Enum): RED = 'stop' GREEN = 'go' YELLOW = 'get ready' my_json = json.dumps(Color.RED) print(my_json) # 👉️ "stop" my_str = json.loads(my_json) print(my_str) # 👉️ 'stop'
该类Color
是 和 的子str()
类Enum
。
您可以使用int
该类创建一个枚举,其常量也是int
.
主程序
from enum import Enum import json class Color(int, Enum): RED = 1 GREEN = 2 YELLOW = 3 my_json = json.dumps(Color.RED) print(my_json) # 👉️ "1" my_int = json.loads(my_json) print(my_int) # 👉️ 1
这与使用模块中的IntEnum类非常相似
enum
。
主程序
from enum import IntEnum import json class Color(IntEnum): RED = 1 GREEN = 2 YELLOW = 3 my_json = json.dumps(Color.RED) print(my_json) # 👉️ "1" my_int = json.loads(my_json) print(my_int) # 👉️ 1
我们没有从int
andEnum
扩展,而是从 class 扩展IntEnum
以实现相同的结果。
请注意,在使用派生枚举时有
一些规则:
- 子类
Enum
化时,在类之前指定混合类型Enum
。 - 虽然
Enum
可以有任何类型的成员,但一旦混合了其他类型,枚举中的所有成员都必须具有指定类型的值(例如
int
)。