我有一个枚举类:
class Group(enum.Enum):
user = 0
manager = 1
admin = 2
我有一个迂腐的模型:
class User(BaseModel):
id: int
username: str
group: Group
它生成了序列化到json的以下内容:
{
"id": 5,
"username": "admin",
"group": 2
}
但是,我希望获得枚举字段的名称而不是它的值,所以它应该是:
{
"id": 5,
"username": "admin",
"group": "admin"
}
这可能吗?如果可能,怎么可能?
3条答案
按热度按时间xxslljrj1#
在
pydantic
Github中,我找到了一个解决这个问题的讨论:Map string value to int #598samuelcolvin提出了这样的建议:
wrrgggsh2#
这个问题并不复杂,一年多了,你还没有一个合适的答案,这有点令人惊讶。
一个促成因素可能是你的标题不正确。我发现如果我用正确的术语来框住我的问题,我更有可能得到有帮助的搜索结果。
就我所知,从你的问题,你不是试图“加载”任何东西,你的问题是,你想编码你的Pydantic字段使用Enum名称而不是值,当序列化你的模型到JSON。
你所需要做的就是在
BaseModel
子类中添加一个Config
类,为Group
类型指定一个JSON编码器。json_encoders
属性是一个dict
类型,带有序列化调用项:请更正您的问题标题,以便其他人更容易找到此答案。谢谢。
jchrr9hc3#
成功了:o🎉