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 Todas

O 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

  1. Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
  2. Defina o Nome do tipo raiz (padrão Root).
  3. Escolha o Estilo de saída: @dataclass ou TypedDict.
  4. Copie o código Python gerado ou clique em Baixar para salvá-lo como arquivo.

Exemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Saída
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.

Próximos passos recomendados

Explore mais categorias