我想让 Pydantic 将布尔值写为“y”或“n”。Pydantic 关于编码器的文档建议我可以配置一种基于数据类型对值进行编码的方法,在我的例子bool中。
from pydantic import BaseModel
class MyStuff(BaseModel):
do_it: bool = False
class Config:
json_encoders = {
bool: lambda b: "y" if b else "n",
}
ms = MyStuff()
print(ms.json(exclude_defaults=False))
当我运行这个时,我得到
{“do_it”:假}
当我预料到的时候
{“do_it”:“n”}
其他尝试:
我是否指定默认值都没有关系。
我无法让它适用于其他基本数据类型
int,但它确实适用于pathlib.Path.lambda如果我用这样的函数替换它也不起作用:
def convert_my_bool(b: bool) -> str:
if b:
return "y"
return "n"
class MyStuff(BaseModel):
do_it: bool
class Config:
json_encoders = {
bool: convert_my_bool,
}
我在这里想念什么?我需要如何将Config我的模型中的布尔值写为“y”或“n”?