如何使用 pydantic 生成严格的 json 模式?

How to generate a strict json schema with pydantic?

我最近开始使用 pydandic 生成 JSON 模式来验证数据,但我发现默认情况下生成的模式不会抱怨我的 BaseModel 中的未知键。

示例:

class Query(BaseModel):
    id: str
    name: Optional[str]

生成的模式将通过验证,即使对象具有此处提到的两个属性以外的其他属性。

如果有人添加“foo:bar”,我如何确保验证会失败属性?

您需要在模型上使用配置:

from pydantic import BaseModel, Extra
class Query(BaseModel):
    id: str
    name: Optional[str]
    class Config:
        extra = Extra.forbid

它默认为 Extra.ignore,另一个选项是 Extra.allow,它将任何额外的字段添加到结果对象。

您也可以只使用字符串 "ignore""allow""forbid"

以下是您可以使用的所有模型配置选项:

https://pydantic-docs.helpmanual.io/usage/model_config/