this is my code:
from pydantic import (
BaseModel,
HttpUrl,
)
class MyModel(BaseModel):
url: HttpUrl
model = MyModel(url="https://io.com")
print(f"model_dump: {model.model_dump()}")
print(f'model_dump_json: "{model.model_dump_json()}"')
Result:
model_dump: {'url': Url('https://io.com/')}
model_dump_json: "{"url":"https://io.com/"}"
Model_dump_json() gives me a string.
How to get dict without Url(...) on pydantic model.model_dump()?
Thanks
I can use json.loads(model.model_dump_json()), but it is not normal.
You can use field_serializer
:
from typing import Any
from pydantic import (
BaseModel,
HttpUrl,
field_serializer,
FieldSerializationInfo
)
class MyModel(BaseModel):
url: HttpUrl
@field_serializer("url")
def ser_url(self, value: Any, info: FieldSerializationInfo):
return str(value)
model = MyModel(url="https://io.com")
print(f"model_dump: {model.model_dump()}")
print(f'model_dump_json: "{model.model_dump_json()}"')
Output:
model_dump: {'url': 'https://io.com/'}
model_dump_json: "{"url":"https://io.com/"}"