logo
GeekFormat

JSON para Python

Ferramenta online gratuita JSON para Python que converte automaticamente dados JSON em classes Python @dataclass com anotações de tipo. Strings viram str, inteiros int, floats float, booleanos bool, arrays List[T], objetos aninhados geram dataclasses independentes, null vira Optional[Any]. Execução local no navegador, copie em um clique ou baixe model.py. O código gerado é compatível com a biblioteca padrão dataclasses do Python 3.7+ e pode ser usado diretamente com FastAPI, Django REST Framework, marshmallow, cattrs.

Sugestões Relacionadas

Sobre JSON para Python: Converter dados JSON em modelos dataclass executáveis

JSON para Python é o processo de converter dados no formato JSON em definições de tipo @dataclass Python.

@dataclass é um recurso da biblioteca padrão introduzido no Python 3.7 (PEP 557).

Reconhecimento de tipos é o coração de JSON para Python.

Ao contrário de algumas ferramentas online, todos os cálculos desta ferramenta acontecem no navegador.

O código gerado pode ser usado diretamente em projetos Python.

Código gerado automaticamente é um ponto de partida, não um ponto final.

dataclass vs Pydantic BaseModel vs attrs vs TypedDict.

JSON para Python tem valor único no ecossistema Data Science.

Outras ferramentas opcionais no ecossistema Python: marshmallow, cattrs, pydantic, apischema.

Em cenários CLI e automação.

Desempenho e manutenibilidade com frozen=True e slots=True.

Casos de uso

  • Integração REST API
  • Modelos requisição/resposta FastAPI
  • Serializadores Django Ninja / DRF
  • Modelagem de dados Scraper
  • Definição de features ML
  • Deserialização de arquivos de configuração
  • Estrutura temporária Jupyter Notebook
  • Definição de interface de microsserviços
  • Desenvolvimento de ferramentas CLI
  • Construção de dados de teste
  • Análise de logs estruturados
  • Migração de centro de configuração
  • Colaboração cross-language
  • Migração de banco de dados
  • Blockchain/Web3
  • ETL Data Science
  • Validação de schema OpenAPI
  • Exemplos didáticos
  • Conversão de nomes de campo

Como Usar

  1. Cole o conteúdo JSON no editor à esquerda ou carregue um arquivo
  2. Aguarde 400ms para conversão automática
  3. Se o JSON estiver malformado clique «Reparar JSON»
  4. Clique «Copiar» ou «Baixar» para salvar model.py

Recursos

  • Conversão local no navegador
  • Saída com anotações dataclass
  • Reconhecimento automático de tipos
  • Divisão automática de objetos aninhados
  • Resolução automática de genéricos List
  • Campos Optional opcionais
  • Conversão automática com debounce de 400ms
  • Correção de erros JSON em um clique
  • Copiar e baixar
  • Histórico de entrada localStorage
  • Painéis responsivos redimensionáveis
  • Suporta pós-processamento Pydantic/attrs/TypedDict

Exemplos de Código

Python: Parsing resposta API com requests para dataclass gerada

python
# requirements.txt
# requests>=2.31

from dataclasses import dataclass
from typing import Any, List, Optional
import json
import requests


@dataclass
class Address:
    city: str
    zip: str


@dataclass
class User:
    id: int
    name: str
    active: bool
    address: Address
    tags: List[str]
    label: Optional[Any] = None


def main() -> None:
    resp = requests.get("https://api.example.com/users/1", timeout=10)
    resp.raise_for_status()
    user: User = User(**resp.json())
    print(f"{user.name} lives in {user.address.city}")


if __name__ == "__main__":
    main()

Python: FastAPI usa modelo gerado para validação body (versão Pydantic)

python
# pip install fastapi 'pydantic>=2'

from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel


class Address(BaseModel):
    city: str
    zip: str


class User(BaseModel):
    id: int
    name: str
    email: str
    active: bool = True
    address: Address
    tags: List[str] = []
    label: Optional[str] = None


app = FastAPI()


@app.post("/users")
async def create_user(user: User) -> dict:
    return {"id": user.id, "name": user.name}

Best Practices

Exemplo JSON deve conter valores de exemplo para todos os campos

Forneça valores de exemplo para campos chave para obter tipos precisos.

JSONs complexos preferencialmente divididos em múltiplas dataclasses

Divida em múltiplos arquivos se o número de campos exceder 50.

Mude para Pydantic BaseModel se validação em runtime for necessária

Para projetos FastAPI ou validação necessária, use Pydantic.

Combine mypy para verificações de tipo na fase CI

Adicione mypy src/ --strict ao pipeline CI.

Evite valores padrão mutáveis em campos dataclass

Use field(default_factory=list) em vez de = [].

O model.py baixado deve ser colocado em um pacote models independente

Estrutura recomendada: src/models/__init__.py + submódulos.

JSONs sensíveis devem ser processados localmente

Use esta ferramenta (execução local) para JSONs sensíveis.

Python 3.10+ ative slots para economizar memória

Use @dataclass(slots=True) em Python 3.10+ para melhor desempenho.

Perguntas frequentes

Como converto JSON para uma dataclass Python?

Cole o conteúdo JSON no editor à esquerda ou carregue um arquivo.

O código Python gerado inclui anotações dataclass?

Sim, gera o decorador @dataclass e imports necessários.

Quais estruturas de dados JSON são suportadas?

Suporta todas as estruturas JSON válidas: tipos primitivos, arrays, objetos aninhados.

Como os tipos de campo JSON são mapeados para tipos Python?

Strings→str, inteiros→int, floats→float, booleanos→bool, arrays→List[T], objetos aninhados→@dataclass, null→Optional[Any].

Que tipo é gerado para valores null?

Valores null geram Optional[Any].

Arrays são convertidos para List?

Sim, arrays JSON são convertidos para List[T].

Como objetos aninhados são tratados?

Cada objeto aninhado gera uma classe @dataclass independente.

Posso personalizar o nome da classe gerada?

Sim, você pode modificar manualmente os nomes após a geração.

O código gerado pode ser usado diretamente em um projeto?

Sim, certifique-se de ter ambiente Python 3.7+.

Posso converter para Pydantic BaseModel em vez de dataclass?

Sim, substitua @dataclass por class Xxx(BaseModel): e importe de pydantic.

Os dados são enviados para o servidor? A privacidade é segura?

Execução completamente local no navegador, nenhum dado é enviado para servidores.

É necessário registro ou login?

Não. Ferramenta completamente gratuita, sem registro.

O que fazer se o formato JSON estiver errado?

Clique no botão «Reparar JSON» para corrigir erros comuns automaticamente.

Converter JSONs grandes é lento?

Para JSONs acima de 10MB recomendamos a ferramenta CLI quicktype.

Solução de Problemas

Mensagem «Insira dados JSON» ou lado direito vazio

A caixa de entrada está vazia. Certifique-se de ter colado JSON válido.

Mensagem parsing JSON falhou

Causas comuns: vírgula final, aspas simples em vez de duplas, chaves sem aspas, comentários JavaScript.

Tipos de campo gerados não precisos o suficiente

Modifique manualmente os tipos após a geração.

Campo null gerou Optional[Any] em vez de Optional[str]

O tipo concreto não pode ser deduzido de null.

Erro de importação arquivo .py baixado

Possíveis causas: versão Python inferior a 3.7, conflitos de nome.

Campos JSON snake_case não correspondem ao estilo Python

Use alias_generator do Pydantic ou renomeie manualmente.

Página congela com JSONs muito grandes

Recomendamos dividir o JSON ou usar ferramenta CLI.

Erro de validação body FastAPI (422)

Altere o tipo de campo para Optional[Typo] = None.

Glossário

dataclass
Decorador da biblioteca padrão Python 3.7+ (@dataclass) para gerar automaticamente métodos mágicos.
Módulo typing
Biblioteca padrão Python para anotações de tipo.
Optional[T]
Tipo opcional do módulo typing.
List[T]
Tipo lista genérica do Python.
Any
Tipo especial que aceita qualquer tipo.
Pydantic BaseModel
Classe base para modelos de dados da biblioteca Pydantic.
FastAPI
Framework web Python moderno baseado em Pydantic.
PEP 557
Proposta que define a sintaxe do decorador dataclass.
Anotação de tipo (Type Hint)
Indicação de tipo anotada após parâmetros e variáveis.
PEP 484
Proposta de padrão para anotações de tipo em Python.
from __future__ import annotations
Instrução para avaliação atrasada de anotações (PEP 563).
model.py
Nome de arquivo padrão baixado por esta ferramenta.

Tabela de referência rápida tipos JSON → tipos Python

A ferramenta deduce automaticamente o tipo Python correspondente:

Exemplo valor JSONTipo Python geradoExplicação
nullOptional[Any]Valor null incerto
true / falseboolBooleanos JSON → bool
42intInteiros JSON → int
3.14floatFloats JSON → float
"hello"strStrings JSON → str
["a","b"]List[str]Array de strings → List[str]
[1,2,3]List[int]Array de inteiros → List[int]
[{...},{...}]List[Item]Array de objetos → List[Item]
[]List[Any]Array vazio
{...} objeto aninhado@dataclass independenteObjetos aninhados geram @dataclass independente

Privacy & Security

Todas as operações desta ferramenta JSON para Python acontecem completamente localmente no navegador: parsing JSON, geração de código Python e download de arquivos são executados no lado do cliente via JavaScript, nenhum conteúdo JSON, arquivos carregados ou código gerado é enviado pela rede para servidores.

Authoritative References