【发布时间】:2021-02-17 15:04:57
【问题描述】:
我正在尝试使用 pydantic 来创建一个可以验证通用映射的 JSON 模式,我可以将 any key 作为字符串,并且每个键都可以分配任何值。
我该怎么做?
到目前为止,我成功地使用 BaseModel 为我知道每个键名和类型的映射创建模型,但在这种情况下,它应该是任何键,只要是文本(或遵循正则表达式模式进行命名),没有限制关于赋值。
【问题讨论】:
标签: pydantic
我正在尝试使用 pydantic 来创建一个可以验证通用映射的 JSON 模式,我可以将 any key 作为字符串,并且每个键都可以分配任何值。
我该怎么做?
到目前为止,我成功地使用 BaseModel 为我知道每个键名和类型的映射创建模型,但在这种情况下,它应该是任何键,只要是文本(或遵循正则表达式模式进行命名),没有限制关于赋值。
【问题讨论】:
标签: pydantic
我不确定我是否完全理解您的情况,但您可能需要 custom root type。像这样的:
from typing import Dict, Any
from pydantic import BaseModel
class Model(BaseModel):
__root__: Dict[str, Any]
def __iter__(self):
return iter(self.__root__)
def __getattr__(self, item):
return self.__root__[item]
m = Model.parse_obj({'key1': 'val1', 'key2': 'val2'})
assert m.key1 == "val1"
【讨论】: