简体   繁体   中英

How to generate a strict json schema with pydantic?

I recently started to use pydandic to generate JSON schemas for validating data but I found the by default the generated schema does not complain about unknown keys inside my BaseModel.

Example:

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

The generated schema would pass validation even if the object has other attributes than the two one mentioned here.

How can I assure validation will fail if someone adds a "foo: bar" property?

You need to use a configuration on your model:

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

It defaults to Extra.ignore , the other option is Extra.allow which adds any extra fields to the resulting object.

You can also just use the strings "ignore" , "allow" , or "forbid"

Here are all the model config options you can use:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM