[英]import json to pydantic model, change fiield name
我有來自外部系統的 json,其中包含“system-ip”、“domain-id”等字段。 python中不允許使用這些名稱,所以我想將它們更改為“system_ip”、“domain_id”等。我使用“pydantic”w關鍵字在stackoverflow上閱讀了所有內容,我嘗試了pydantic文檔中的示例,作為最后的手段,我生成了json來自我的 json 的架構,然后使用
datamodel-codegen --input device_schema.json --output model.py
我生成了模型。
生成的模型有這樣的字段
system_ip: str = Field(..., alias='system-ip')
host_name: str = Field(..., alias='host-name')
device_type: str = Field(..., alias='device-type')
device_groups: List[str] = Field(..., alias='device-groups')
它仍然不起作用。 當我做
with open("device.json") as file:
raw_device = json.load(file)
d = PydanticDevice(**raw_device)
pydantic 仍然看到“舊”字段名稱,而不是帶注釋的,並且我有錯誤
TypeError: __init__() got an unexpected keyword argument 'system-ip'
我做錯了什么?
因此,為了將來參考,裝飾器@pydantic.dataclass 與從 pydantic BaseModel 繼承做的事情不同
@dataclasses
class VmanageDevice:
deviceId: str
system_ip: str = Field(..., alias='system-ip')
host_name: str = Field(..., alias='host-name')
...
不起作用
但
class VmanageDevice(BaseModel):
deviceId: str
system_ip: str = Field(..., alias='system-ip')
host_name: str = Field(..., alias='host-name')
reachability: str
...
很有魅力
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.