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

标签 python jsonschema 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/

关于python - 如何使用 pydantic 生成严格的 json 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65738013/

相关文章:

python - 从另一个命令调用的 Django 命令中的重定向会导致无关的换行符。我怎样才能解决这个问题?

python - 如何使用 ponyorm 中的实体进行 get() 查询

jsonschema - 如何限制 JSON 模式中对象键的最大长度

python - 如何验证 pydantic 中的复杂列表类型?

python - 如何使用 pydantic 模式从 sqlalchemy 关系中单独获取列

python - 如何分析库的大小

python - 如何从mongodb获取对象id

json - 需要一些 JSON Schema 的清晰度

java - 在 json schema 中使用 ref 到 pojo 时出错

python - 动态更新 pydantic 中子类所有属性的类型提示