我最近才开始查看 pydantic 的文档,但我没有看到从 dict 对象生成模型的直接方法。有没有办法生成一个,然后我可以检索并保存以备后用?
这是我拥有的数据示例。
{
'id': '424c015f-7170-4ac5-8f59-096b83fe5f5806082020',
'contacts': [{
'displayName': 'Norma Fisher',
'id': '544aa395-0e63-4f9a-8cd4-767b3040146d'
}],
'startTime': '2020-06-08T09:38:00+00:00'
}
Run Code Online (Sandbox Code Playgroud)
期待一个类似于......的模型
class NewModel(BaseModel):
id: str
contacts: list
startTime: str
Run Code Online (Sandbox Code Playgroud)
小智 46
您还可以使用它的__init__方法:
your_mode = YourMode(**your_dict)
Run Code Online (Sandbox Code Playgroud)
小智 6
我使用此方法使用字典定义在运行时生成模型。这种方法也允许您定义嵌套模型。字段类型语法借鉴了 create_model 方法。
from pydantic import create_model
m = {
"a":(int,...),
"b":{
"c":(str,"hi"),
"d":{
"e":(bool,True),
"f":(float,0.5)
}
}
}
def dict_model(name:str,dict_def:dict):
fields = {}
for field_name,value in dict_def.items():
if isinstance(value,tuple):
fields[field_name]=value
elif isinstance(value,dict):
fields[field_name]=(dict_model(f'{name}_{field_name}',value),...)
else:
raise ValueError(f"Field {field_name}:{value} has invalid syntax")
return create_model(name,**fields)
model = dict_model("some_name",m)Run Code Online (Sandbox Code Playgroud)
小智 5
如果您有一个示例 json 并且想要生成一个用于验证的 pydantic 模型并使用它,那么您可以尝试这个网站 - https://jsontopydantic.com/ 它可以从示例 json 生成一个 pydantic 模型