JSON to Python
Gere classes TypedDict Python a partir de uma amostra JSON, para mypy, Pyright e autocompletar no editor.
Entrada JSON
Código gerado
Digite JSON à esquerda para gerar um tipo a partir dele.
O que é JSON to Python?
Um conversor de JSON para Python transforma um documento JSON de amostra em definições de classes Python tipadas — aqui, classes TypedDict que descrevem a forma exata de um dicionário interpretado por json.loads. O Python entregará sem reclamar um dict comum de qualquer payload JSON, o que é conveniente até o momento em que você precisa saber o que realmente há dentro dele: aí cada acesso de chave é um palpite, erros de digitação só aparecem em tempo de execução e seu editor não pode oferecer autocomplete algum. Declarar a forma como um TypedDict dá a mypy, Pyright e à sua IDE informação suficiente para autocompletar chaves, capturar erros de grafia antes de o código rodar e sinalizar quando um campo é usado com o tipo errado — enquanto o valor continua um dict comum em tempo de execução, então nada muda na forma como você interpreta ou passa os dados.
Como usar JSON to Python
- Cole um payload JSON representativo no painel esquerdo — as classes geradas refletem exatamente as chaves presentes naquela amostra.
- Defina um nome de classe raiz acima da saída (o padrão é "Root"); cada objeto aninhado se torna sua própria classe, nomeada pela chave que o contém.
- Copie as classes para um módulo e anote seu código de parsing, por exemplo `data: Root = json.loads(raw)`.
- Use o seletor de linguagem acima da saída para gerar a mesma forma como uma struct Go, struct Rust ou tipo TypeScript.
Exemplos
Objeto plano como TypedDict
Entrada
{"id": 1, "name": "Ada", "active": true}
Saída
from typing import TypedDict class Root(TypedDict): id: int name: str active: bool
Objeto aninhado se torna sua própria classe
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Saída
from typing import TypedDict class User(TypedDict): id: int name: str roles: list[str] class Root(TypedDict): user: User
Erros comuns
- Assumir que um TypedDict rejeita dados ruins em tempo de execução — ele não rejeita, então uma API que muda de forma continuará entregando um dict errado, sem erro algum, até algo a jusante quebrar.
- Copiar a sintaxe `list[str]` para um projeto em Python 3.8 ou mais antigo, onde ela levanta um TypeError no import, a menos que `from __future__ import annotations` esteja presente.
- Gerar a partir de uma amostra em que chaves opcionais por acaso estão ausentes, produzindo uma classe que não marca nada como NotRequired e dá falsa confiança sobre o que o payload sempre contém.
Por que usar esta ferramenta
- Dá a editores e ao mypy/Pyright autocompletar real de chaves e detecção de erros de digitação sobre dados que de outra forma seriam um dict opaco.
- Não adiciona overhead nem dependência em tempo de execução — o valor interpretado continua um dict comum, então o código de parsing existente permanece inalterado.
- Roda inteiramente no cliente, então um payload copiado de um serviço Django ou FastAPI fica local enquanto estes TypedDicts são gerados.