🎯 Serialização com Pydantic no Python

Em poucas palavras

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 (Python dict) ou em uma string codificada em JavaScript Object Notation.


📝 Notas e Desenvolvimento


🔗 Conexões e Contexto


📚 Referências e Fontes

Citações Diretas

📂 Outros Conteúdos Preservados

Serialização com Pydantic no Python

Serialização com Pydantic no 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 (Python dict) ou em uma string codificada em JavaScript Object Notation.

:: Referência :: Serialization - Pydantic

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

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]']}