Skip to content

Conversor de JSON para classes Python

Cole JSON e obtenha classes Python na hora — dataclass, Pydantic v2 ou TypedDict. Tipagem Optional, aliases camelCase e classes aninhadas. Grátis, no navegador.

Sem rastreamento Roda no navegador Grátis
Saída
0 caracteres
Saída Python
0 linhas
Saída verificada em relação à sintaxe do Python 3.12+ e à semântica do Pydantic v2 para payloads de API do mundo real. — Go Tools Team · Jul 3, 2026

O que é conversão de JSON para Python?

A conversão de JSON para Python transforma uma amostra de JSON em classes Python prontas para uso — uma dataclass da biblioteca padrão, um modelo Pydantic v2 ou um TypedDict — para que você nunca escreva à mão as definições de campo de uma resposta de API ou arquivo de configuração. Este gerador de classe Python infere os tipos corretos (int, float, str, bool, Optional), transforma objetos aninhados em classes nomeadas e adiciona aliases Pydantic para chaves em camelCase, tudo 100% no seu navegador.

Exemplos

Resposta de API → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

Um payload REST típico torna-se um @dataclass pronto para uso. Números inteiros inferem int, decimais inferem float e arrays tornam-se List[str].

Objeto aninhado (classe filha primeiro)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

Objetos aninhados tornam-se classes separadas e nomeadas. A classe filha (Owner) é emitida antes da classe pai, então o código roda sem from __future__ import annotations.

camelCase → alias Pydantic v2

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

No modo Pydantic, os campos ficam em snake_case com Field(alias=...) mapeando de volta para a chave JSON original, e populate_by_name permite construir o modelo das duas formas — então a validação faz a ida e volta com dados reais de API.

Array de objetos → TypedDict (chave opcional)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

Arrays de objetos são mesclados em um único tipo de elemento. Uma chave ausente em alguns itens (nick) torna-se Optional. TypedDict descreve o formato de um dict simples sem custo algum em tempo de execução.

Como converter JSON para Python

  1. 1

    Cole seu JSON

    Insira um objeto JSON, array ou resposta de API no campo de entrada. A conversão começa instantaneamente.

  2. 2

    Escolha dataclass, Pydantic ou TypedDict

    Alterne o estilo de saída para combinar com o seu projeto e renomeie a classe raiz a partir do padrão Root.

  3. 3

    Copie ou baixe

    Pegue o Python gerado com um clique e cole-o diretamente no seu código.

Common Use Cases

Clientes de API tipados
Transforme uma resposta de exemplo de REST ou GraphQL em modelos Pydantic ou dataclasses para um cliente requests ou httpx sem escrever definições de campo à mão.
Análise de configuração e fixtures
Gere modelos para arquivos de configuração JSON, fixtures de teste ou payloads de webhook que você precisa carregar e validar.
Prototipagem rápida e dicas de tipo
Cole um payload desconhecido para ver instantaneamente sua estrutura como tipos Python — uma forma rápida de explorar uma nova API ou adicionar dicas TypedDict a código legado baseado em dict.

Como a conversão funciona

Inferência estrutural
Cada objeto torna-se uma classe nomeada; formatos idênticos são deduplicados, então você obtém uma única classe, não cópias. Arrays de objetos são mesclados chave por chave, e chaves ausentes em alguns itens tornam-se Optional.
Três alvos idiomáticos
dataclass mantém zero dependências e preserva as chaves válidas para Root(**data); Pydantic v2 adiciona aliases Field junto com populate_by_name para validação real; TypedDict descreve um dict simples para verificadores de tipo estáticos, usando a sintaxe funcional quando uma chave não é identificador.
Tipagem correta e leve em dependências
Números inteiros viram int (precisão arbitrária, sem overflow), decimais e expoentes viram float, e campos que só têm null viram Optional[Any]. Os imports de typing (Optional, List, Any) são adicionados apenas quando realmente usados.
100% no lado do cliente
A análise e a geração rodam no seu navegador sem chamadas de rede, então seus dados permanecem privados.

Dicas para modelos Python limpos

Combine o modo com a tarefa
Use dataclass para contêineres de dados internos, Pydantic v2 quando você valida ou faz o parse de entradas não confiáveis, e TypedDict quando você só precisa de dicas de tipo estáticas sobre dicts existentes.
Cole uma amostra representativa
Os campos são marcados como Optional apenas quando uma amostra os omite, e valores que só têm null recorrem a Any. Um exemplo completo e preenchido produz os tipos mais precisos.
Nomeie sua classe raiz
Defina um nome de raiz significativo (User, ApiResponse) em vez do padrão Root para um código legível e importável.

Perguntas frequentes

Como converter JSON para uma classe Python?
Cole seu JSON no campo de entrada. O conversor o lê instantaneamente no seu navegador e gera o Python à direita. Escolha dataclass, Pydantic v2 ou TypedDict no seletor e clique em Copiar — sem upload, sem conta, sem espera.
Qual a diferença entre a saída dataclass, Pydantic e TypedDict?
dataclass entrega um @dataclass da biblioteca padrão sem dependências — ótimo para simples contêineres de dados. Pydantic v2 emite classes BaseModel que validam e convertem dados em tempo de execução, ideal para fazer o parse de respostas de API não confiáveis. TypedDict descreve o formato de um dict simples para verificadores de tipo estáticos (mypy, Pyright) sem custo em tempo de execução. Troque de modo para comparar o mesmo JSON em cada um.
Como gerar um modelo Pydantic a partir de JSON?
Escolha a aba Pydantic v2. Os campos são convertidos para snake_case com Field(alias="originalKey"), então o modelo continua lendo JSON em camelCase, e model_config = ConfigDict(populate_by_name=True) permite construí-lo também pelo nome do campo. Faça o parse de um payload com Root.model_validate(data) — o Pydantic valida os tipos e levanta um erro claro em uma entrada inválida.
Como a saída dataclass lida com chaves em camelCase?
Uma dataclass não tem alias embutido, então, para manter Root(**data) funcionando, o modo dataclass conserva a chave original como nome do campo quando ela é um identificador Python válido (publicRepos continua publicRepos). Se você quer snake_case idiomático com aliases, use o modo Pydantic v2, que mapeia campos snake_case de volta para a chave JSON exata.
Como campos opcionais e null são tipados?
Quando uma chave aparece em alguns itens do array, mas não em outros, seu tipo é envolvido em Optional. Um campo que é sempre apenas null torna-se Optional[Any], porque um null de JSON sozinho não carrega tipo algum. Cole uma amostra representativa com um valor preenchido para obter um tipo mais específico que Any.
Para qual tipo Python cada valor JSON é mapeado?
Strings viram str, booleanos viram bool, números inteiros viram int, e qualquer número com ponto decimal ou expoente vira float. Como os inteiros do Python têm precisão arbitrária, até IDs enormes continuam int — não há overflow de 64 bits. Arrays vazios ou de tipos mistos tornam-se List[Any], e objetos tornam-se classes aninhadas.
Ele lida com objetos aninhados e arrays de objetos?
Sim. Cada objeto aninhado vira sua própria classe nomeada, e formatos idênticos são deduplicados em uma única classe reutilizada por cada campo. Arrays de objetos são mesclados chave por chave, então você obtém uma única classe de elemento, com chaves ausentes em alguns itens marcadas como Optional. As classes filhas são sempre emitidas antes das classes que as usam.
Como palavras-chave do Python e chaves que não são identificadores são tratadas?
Uma chave JSON que é palavra-chave do Python (class, from, import) recebe um sublinhado no final (class_). Chaves com hifens, espaços ou dígito inicial são saneadas para identificadores válidos nos modos dataclass e Pydantic. No modo TypedDict, qualquer dict que contenha uma chave que não é identificador é emitido com a sintaxe funcional TypedDict('Name', {...}), então a chave exata como "first-name" é preservada.
Como uso a dataclass gerada para fazer o parse de JSON?
Para um objeto plano, json.loads e depois Root(**data) funcionam diretamente. Para estruturas aninhadas, a dataclass não faz recursão automaticamente — construa os objetos filhos você mesmo, use uma biblioteca como dacite ou pydantic.dataclasses, ou mude esta ferramenta para o modo Pydantic v2, onde Root.model_validate(json.loads(text)) faz o parse de toda a árvore em uma única chamada.
Meus dados JSON são privados e seguros?
Sim. A conversão roda 100% no seu navegador com JavaScript. Seu JSON — incluindo tokens, IDs ou dados de clientes — nunca sai da página e nunca é enviado a um servidor.
A ferramenta é grátis? Preciso de uma conta?
É completamente grátis, sem cadastro, sem limites e sem anúncios poluindo o espaço de trabalho. Funciona offline depois que a página carrega.

Ferramentas relacionadas

Ver todas as ferramentas →