Transforme uma amostra de JSON em dataclasses, modelos Pydantic ou TypedDicts do Python com type hints
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum. Verificado em 16 de outubro de 2026.Cole uma amostra de JSON e receba dataclasses, modelos Pydantic v2 ou TypedDicts do Python com type hints. Números inteiros viram int e qualquer decimal deixa o campo como float; um valor null ou ausente vira str | None com None como padrão, e os 3 estilos de classe usam a mesma inferência.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole uma amostra de JSON, como a resposta de uma API, na caixa da esquerda.
As classes Python aparecem enquanto você digita: uma classe por objeto, com type hints como int, float, list[str] e str | None.
Escolha dataclass, Pydantic ou TypedDict, e a tipagem do Python 3.9 se o seu projeto for anterior ao 3.10.
Clique em Copiar, ou em Baixar para salvar models.py.
O Python lê JSON como dicionários, e é uma classe com type hints que permite a um editor, a um verificador de tipos ou ao Pydantic apontar uma chave escrita errado ou um tipo incorreto. Este conversor escreve essas classes a partir de uma amostra, então uma resposta longa de API vira Python tipado com uma só colagem.
Como os tipos são escolhidos.
| Valor JSON | Tipo Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (só números inteiros) | int |
| 4.5 (algum decimal visto) | float |
| null, e também um tipo | str | None, ou Optional[str] |
| só null, ou tipos misturados | Any |
| [ ... ] | list[...] |
| { } vazio | dict[str, Any] |
| { ... } | uma classe própria |
Arrays de objetos. Todos os objetos de um array são unidos em uma classe, então uma chave que aparece só em alguns continua lá, com um tipo que aceita None e None como padrão. Dois objetos com exatamente as mesmas chaves e tipos compartilham uma classe.
Três estilos. Uma dataclass não precisa de nada instalado; campos com padrão vão para depois dos outros, porque senão o Python gera um TypeError. Modelos Pydantic usam atributos em snake_case com Field(alias=...) para chaves escritas de outro jeito, como userName ou first-name. Um TypedDict mantém as chaves exatamente e marca como NotRequired as que aparecem só às vezes.
Ordem e nomes. As classes são escritas começando pelas filhas, assim todo nome é definido antes de ser usado. Uma palavra reservada como class vira class_, e uma chave que esconderia um tipo, como list, ganha o mesmo sublinhado.
Cada estilo foi verificado executando o resultado no CPython com Pydantic 2 e validando a amostra. Nada do que você cola sai do navegador.
Cole uma amostra de JSON no conversor e as classes Python aparecem ao lado, uma por objeto, com um type hint em cada atributo. Escolha dataclass para classes simples, Pydantic para validação ou TypedDict para continuar trabalhando com dicionários comuns, e copie o módulo para o seu projeto.
Uma dataclass serve para dados que você mesmo monta e não precisa de biblioteca. O Pydantic serve para dados de fora, como respostas de API, porque confere cada valor e converte os objetos aninhados para você. Um TypedDict só acrescenta type hints ao dicionário que json.loads devolve, então não custa nada em tempo de execução.
Os atributos do Pydantic são escritos em snake_case, como pede a PEP 8, com Field(alias="userName") para que a validação continue lendo a chave original. Um TypedDict mantém cada chave exatamente e passa para a sintaxe funcional quando uma chave não é um nome válido. Uma dataclass mantém as chaves que são nomes válidos e anota o restante.
Uma chave que era null na amostra, ou que falta em alguns objetos de um array, pode conter None, então o type hint permite isso. Chaves ausentes também recebem None como padrão, e numa dataclass esses campos vão para o final, porque o Python recusa um campo sem padrão depois de um campo com padrão.
A tipagem padrão, como list[str] e str | None, exige Python 3.10 ou mais recente. Ative a tipagem do Python 3.9 para receber Optional e List do módulo typing. O NotRequired do TypedDict vem de typing_extensions e está no próprio typing a partir do Python 3.11.
Não. A conversão roda no seu navegador sem nenhuma requisição a um servidor, e o JSON não é guardado, então respostas de API com tokens ou dados pessoais ficam no seu dispositivo. Feche a aba e nada fica para trás.
Taxas e regras mudam; confira a fonte antes de confiar em um valor.
Ainda com dúvidas? Pergunte sobre Conversor de JSON para classes Python e qualquer pessoa que saiba pode responder. Não é preciso ter conta.