# Serialização com Pydantic no [[Linguagem de programação Python|Python]]
> [!NOTE] Serialização com Pydantic no [[Linguagem de programação Python|Python]]
> No Pydantic, os termos "serializar" e "dump" são usados de forma intercambiável. Ambos se referem ao processo de converter um modelo Pydantic em um dicionário ([[Linguagem de programação Python|Python]] `dict`) ou em uma string codificada em [[JSON]].
**:: Referência ::** [Serialization - Pydantic](https://docs.pydantic.dev/latest/concepts/serialization/)
## Casos de Uso Comuns
- **APIs Web:** Enviar dados de resposta em formato JSON para clientes.
- **Armazenamento de Dados:** Salvar o estado de objetos em arquivos JSON ou bancos de dados.
- **Comunicação entre Serviços:** Trocar informações entre diferentes microserviços.
- **Configuração:** Ler e escrever arquivos de configuração em formato JSON.
Ao utilizar `model_dump()` e `model_dump_json()` com seus respectivos parâmetros, você tem um controle robusto sobre como seus modelos Pydantic são representados em formatos externos, garantindo que os dados sejam transmitidos ou armazenados da maneira correta.
## Exemplos curtos
```python
from typing import Any
from pydantic import BaseModel, Field, Json
class BarModel(BaseModel):
whatever: int
class FooBarModel(BaseModel):
banana: float | None = 1.1
foo: str = Field(serialization_alias='foo_alias')
bar: BarModel
m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': 123})
# returns a dictionary:
print(m.model_dump())
#> {'banana': 3.14, 'foo': 'hello', 'bar': {'whatever': 123}}
print(m.model_dump(include={'foo', 'bar'}))
#> {'foo': 'hello', 'bar': {'whatever': 123}}
print(m.model_dump(exclude={'foo', 'bar'}))
#> {'banana': 3.14}
print(m.model_dump(by_alias=True))
#> {'banana': 3.14, 'foo_alias': 'hello', 'bar': {'whatever': 123}}
print(
FooBarModel(foo='hello', bar={'whatever': 123}).model_dump(
exclude_unset=True
)
)
#> {'foo': 'hello', 'bar': {'whatever': 123}}
print(
FooBarModel(banana=1.1, foo='hello', bar={'whatever': 123}).model_dump(
exclude_defaults=True
)
)
#> {'foo': 'hello', 'bar': {'whatever': 123}}
print(
FooBarModel(foo='hello', bar={'whatever': 123}).model_dump(
exclude_defaults=True
)
)
#> {'foo': 'hello', 'bar': {'whatever': 123}}
print(
FooBarModel(banana=None, foo='hello', bar={'whatever': 123}).model_dump(
exclude_none=True
)
)
#> {'foo': 'hello', 'bar': {'whatever': 123}}
class Model(BaseModel):
x: list[Json[Any]]
print(Model(x=['{"a": 1}', '[1, 2]']).model_dump())
#> {'x': [{'a': 1}, [1, 2]]}
print(Model(x=['{"a": 1}', '[1, 2]']).model_dump(round_trip=True))
#> {'x': ['{"a":1}', '[1,2]']}
```
# Notas