我有这样的事件表示:
event = {
"properties": {
"http.requestMethod": "POST",
"http.userAgent": "wget",
"device.product": "ASA",
"device.vendor": "Cisco"
}
}我想使用pydantic来表示和验证这些事件,但我需要将所有不同的命名空间划分为它们自己的类,如下所示:
from pydantic import BaseModel, Field
class Http(BaseModel):
http_requestmethod = Field(alias="http.requestMethod")
http_useragent = Field(alias="http.userAgent")
class Device(BaseModel):
device_product = Field(alias="device.product")
device_vendor = Field(alias="device.vendor")有人知道我是如何做到这一点的吗?
发布于 2021-06-16 00:46:59
from pydantic import BaseModel, Field, validator
event = {
"properties": {
"http.requestMethod": "POST",
"http.userAgent": "wget",
"device.product": "ASA",
"device.vendor": "Cisco"
}
}
class Http(BaseModel):
http_requestmethod: str = Field(..., alias="http.requestMethod")
http_useragent: str = Field(..., alias="http.userAgent")
class Device(BaseModel):
device_product: str = Field(..., alias="device.product")
device_vendor: str = Field(..., alias="device.vendor")
class Properties(BaseModel):
http: Http
device: Device
class Event(BaseModel):
properties: Properties
@validator('properties', pre=True)
def prop_validator(v):
return Properties(http=Http(**v).dict(by_alias=True),
device=Device(**v).dict(by_alias=True))https://stackoverflow.com/questions/67983223
复制相似问题