我想用Pydantic模型表示以下json:
{
"sip" {
"param1": 1
}
"param2": 2
...
}
意味着json可能包含sip
字段和一些其他字段,任何数字任何名称,所以我希望有一个具有sip:Optional[dict]
字段和某种";休息";,它将被正确地从json解析/序列化为json。有可能吗?
也许您正在寻找extra
型号配置:
extra
在模型初始化期间是忽略、允许还是禁止额外的属性。接受
'ignore'
、'allow'
或'forbid'
的字符串值,或Extra
枚举的值(默认值:Extra.ignore
(。如果包含额外属性,'forbid'
将导致验证失败,'ignore'
将静默地忽略任何额外属性,而'allow'
将把这些属性分配给模型。
示例:
from typing import Any, Dict, Optional
import pydantic
class Foo(pydantic.BaseModel):
sip: Optional[Dict[Any, Any]]
class Config:
extra = pydantic.Extra.allow
foo = Foo.parse_raw(
"""
{
"sip": {
"param1": 1
},
"param2": 2
}
"""
)
print(repr(foo))
print(foo.json())
输出:
Foo(sip={'param1': 1}, param2=2)
{"sip": {"param1": 1}, "param2": 2}