UTILS.
100% no navegador
🐍

JSON para Modelo Pydantic

Transforme um JSON de exemplo em classes de modelo Pydantic v2 do Python, com alternadores para saída @dataclass ou TypedDict e aliasing de campos em snake_case.

saída

Sobre esta ferramenta

A ferramenta JSON para Modelo Pydantic converte um JSON de exemplo colado em classes de modelo Python. Desenvolvedores Python e FastAPI constantemente montam modelos Pydantic a partir de respostas de API de exemplo, e este conversor faz isso instantaneamente no navegador. Ele analisa seu JSON, infere tipos Python recursivamente e emite uma classe por objeto: strings viram str, strings de data-hora ISO datetime, strings apenas de data date, inteiros int, outros números float, booleanos bool, arrays List[T], e objetos aninhados suas próprias classes de modelo nomeadas em PascalCase.

Toda a análise e geração acontecem localmente com JSON.parse e JavaScript puro, então nada que você cola sai da sua máquina. Classes filhas são emitidas antes das classes que as referenciam (ordem topológica), e o cabeçalho importa apenas o que é realmente usado — BaseModel e Field de pydantic, Optional / List / Union / Any de typing, e datetime / date quando relevante. from __future__ import annotations é sempre incluído para que referências futuras funcionem independentemente da ordem.

Chaves ausentes em alguns objetos irmãos, ou vistas como null, viram Optional[T] = None. O alternador de modo de saída alterna entre Pydantic v2 BaseModel (padrão), @dataclass da stdlib e typing.TypedDict. Ative campos snake_case para renomear chaves camelCase ou inválidas e adicionar automaticamente Field(alias="originalKey") para que o modelo ainda analise o JSON original. Copie o código ou baixe-o como um arquivo .py.

Perguntas frequentes

Quais tipos Python são inferidos?
string para str, data-hora ISO para datetime, apenas data para date, inteiro para int, número não inteiro para float, booleano para bool, array para List[T] com T mesclado dos elementos, e objeto para uma classe BaseModel aninhada. Valores nulos ou ausentes viram Optional[T] = None.
Posso obter um dataclass ou TypedDict em vez disso?
Sim. O alternador de modo de saída emite Pydantic v2 BaseModel (padrão), um @dataclass da stdlib com o import dataclasses, ou uma classe typing.TypedDict. A inferência de tipos é a mesma; apenas o invólucro da classe e os imports mudam.
Como chaves não-identificadoras ou camelCase são tratadas?
Com campos snake_case ativados, uma chave como userName vira user_name mais Field(alias="userName") para que ainda faça round-trip. Chaves que são palavras-chave do Python ou identificadores inválidos são sempre alias para que o código gerado seja válido.
As classes estão ordenadas corretamente?
Sim. Classes filhas aninhadas são declaradas antes das classes pai que as usam, e from __future__ import annotations é incluído, então os modelos compilam sem erros de referência futura.

Mais ferramentas