![](/img/trans.png)
[英]How to JSON serialize ENum classes in Pydantic BaseModel
[英]Pydantic json value is empty on Custom Enum
我正在使用 Pydantic 我希望我的枚舉也有文檔字符串。
當我使用enum.Enum
CookingModel
工作正常。
import enum
from pydantic import BaseModel, ValidationError
class DocEnum(enum.Enum):
"""Enum with docstrings support"""
def __new__(cls, value, doc=None):
"""add docstring to the member of Enum if exists
Args:
value: Enum member value
doc: Enum member docstring, None if not exists
"""
obj = str.__new__(cls)
obj._value_ = value
if doc:
obj.__doc__ = doc
return obj
class FruitEnum(str, enum.Enum):
pear = 'pear'
banana = 'banana'
class CookingModel(BaseModel):
fruit: FruitEnum
a = CookingModel(fruit='banana')
a.json()
將返回: {"fruit": "banana"}
但是當我將enum.Enum
更改為DocEnum
時(這樣我就可以獲得文檔字符串)。
class FruitEnum(str, DocEnum):
pear = 'pear'
banana = 'banana'
它將返回: {"fruit": ""}
我該如何解決?
將value
作為第二個參數傳遞給str.__new__
解決問題。
import enum
from pydantic import BaseModel, ValidationError
class DocEnum(enum.Enum):
"""Enum with docstrings support"""
def __new__(cls, value, doc=None):
"""add docstring to the member of Enum if exists
Args:
value: Enum member value
doc: Enum member docstring, None if not exists
"""
obj = str.__new__(cls, value)
obj._value_ = value
if doc:
obj.__doc__ = doc
return obj
class FruitEnum(str, DocEnum):
pear = 'pear', 'it's pear docstring'
banana = 'banana'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.