如何在 Python 中将枚举转换为 JSON

在 Python 中将枚举转换为 JSON

How to convert an Enum to JSON in Python

要将枚举转换为 JSON,请在声明枚举类时从str或类扩展,例如. 然后,您将能够使用该方法将枚举成员直接序列化为 json
intclass 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

我们没有从intandEnum扩展,而是从 class 扩展IntEnum以实现相同的结果。

请注意,在使用派生枚举时
一些规则:

  1. 子类Enum化时,在类之前指定混合类型Enum
  2. 虽然Enum可以有任何类型的成员,但一旦混合了其他类型,枚举中的所有成员都必须具有指定类型的值(例如
    int)。

发表评论