JSON para dataclasses e TypedDict do Python
Converta JSON em dataclasses ou classes TypedDict do Python com type hints, campos Optional e classes aninhadas definidas na ordem de dependência. Grátis, no navegador.
As classes são ordenadas para que as dependências venham primeiro. Campos opcionais têm None como padrão; a saída TypedDict usa NotRequired (Python 3.11+).
Executa totalmente no seu navegador. Seus dados nunca são enviados.
Ferramentas Relacionadas
Ver TodasO que é JSON para Python?
Gere classes Python tipadas a partir de um exemplo JSON: classes @dataclass ou definições TypedDict. Objetos aninhados viram classes próprias, emitidas antes das classes que as usam, para que o módulo seja importado sem erros.
Como usar JSON para Python
- Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
- Defina o Nome do tipo raiz (padrão
Root). - Escolha o Estilo de saída:
@dataclassouTypedDict. - Copie o código Python gerado ou clique em Baixar para salvá-lo como arquivo.
Exemplo
{"id":1,"name":"A","tags":["x"]} from dataclasses import dataclass
from typing import List
@dataclass
class Root:
id: int
name: str
tags: List[str] Quando usar JSON para Python
Use-o para acrescentar type hints a payloads JSON em scripts, código FastAPI ou testes. Dataclasses não convertem dicts aninhados automaticamente – use uma biblioteca como dacite ou pydantic para isso, ou o estilo TypedDict para manter dicts simples.
Como funciona JSON para Python
O exemplo é percorrido recursivamente e cada posição acumula os tipos que encontrou. Arrays de objetos são mesclados em um único tipo: uma chave ausente em alguns elementos vira opcional, uma chave que é null em algum lugar vira anulável, inteiros misturados com decimais viram um tipo de ponto flutuante e qualquer outra mistura de tipos recai em um tipo dinâmico. Objetos aninhados viram tipos nomeados próprios (PascalCase da chave, com chaves de array no singular: orders → Order), com sufixos numéricos quando os nomes colidem. A saída Python usa int, float, str, bool, List[T], Optional[T] para nulls e Any para valores dinâmicos. Nas dataclasses, os campos obrigatórios vêm primeiro e os opcionais recebem = None; chaves que não são identificadores válidos (ou são palavras reservadas como class) são renomeadas em snake_case com um comentário # JSON key. A saída TypedDict marca as chaves ausentes com NotRequired e passa para a sintaxe funcional TypedDict("Name", {...}) quando uma chave não é um identificador válido.
Casos de Uso Comuns
- Anotar tipos de uma resposta de API JSON para mypy ou Pyright
- Criar dataclasses para um arquivo de configuração
- Descrever payloads de webhooks com TypedDict
- Gerar modelos iniciais antes de migrar para pydantic
Perguntas Frequentes
Qual versão do Python é necessária?
A saída com dataclass funciona no Python 3.7+. A saída TypedDict usa NotRequired, disponível no módulo typing a partir do Python 3.11 (ou em typing_extensions para versões anteriores).
Por que alguns campos foram renomeados?
Chaves como first-name ou class não são nomes de atributo válidos, então viram first_name / class_, com um comentário mostrando a chave JSON original.
Posso carregar o JSON direto na dataclass?
Root(**data) funciona para dados planos; objetos aninhados continuam como dicts, a menos que você os converta ou use uma biblioteca auxiliar.