Python の列挙型はそのままでは JSON Serialize することができない。
from enum import Enum
class NUMBERS(Enum):
ONE = "one"
TWO = "two"
THREE = "three"
import json
json.dumps(NUMBERS.ONE) #=> TypeError: Object of type NUMBERS is not JSON serializable
この場合、JSON Serializable な型のサブクラスにすると解決する。
from enum import Enum
class NUMBERS(str, Enum):
ONE = "one"
TWO = "two"
THREE = "three"
import json
json.dumps(NUMBERS.ONE) #=> "one"
この例では値が文字列なので str
のサブクラスにした。
値が整数の場合は同様に int
のサブクラスにしてもよいが、代わりに IntEnum
を使うこともできる。