python 如何在pydantic中使用空格验证密钥

jgwigjjp  于 2023-09-29  发布在  Python
关注(0)|答案(1)|浏览(242)

我有一个包含空格的json键:

My_dict = {"my key": 1}

我想创建一个Model来对其建模:

from pydantic import BaseModel
class MyModel(BaseModel):
    mykey: int
    # my key isn't a legit variable name
    # my_key is, but like mykey - it doesn't catch the correct key from the json

MyModel(**my_dict)

这不管用
我试着玩BaseModel.Config,但没有得到任何地方。在docs上也没有看到任何东西。
这可能吗?
我可以使用一个解决方案:检查json,将所有键的空格替换为下划线,然后使用pydantic,但我不想使用这个...

hec6srdp

hec6srdp1#

是的,可以使用Field的别名:

from pydantic import BaseModel, Field

class MyModel(BaseModel):
    mykey: int = Field(alias='my key')

    class Config:
        allow_population_by_field_name = True

print(MyModel(**{"my key": 1}))
print(MyModel(**{"mykey": 1}))

[Edit@奥默Iftikhar]对于Pydantic V2:
您需要使用populate_by_name而不是allow_population_by_field_name,否则您将收到以下警告

UserWarning: Valid config keys have changed in V2:
* 'allow_population_by_field_name' has been renamed to 'populate_by_name'

相关问题