Você está sem internet. As ferramentas que você já abriu continuam funcionando.
JSON para classes Python
Cole um JSON e receba dataclasses Python, modelos Pydantic ou definições TypedDict com type hints completos. Campos opcionais têm None como padrão e as chaves são convertidas para snake_case.
Grátis e privado. Tudo funciona no seu navegador e nada é enviado.
Relatar um problema
Como funciona
Cole o seu JSONCole uma resposta da sua API ou abra um arquivo .json. Use Exemplo para ver como funciona.
Ajuste as opçõesDefina o nome do tipo principal e as opções desta linguagem. O código se atualiza enquanto você digita.
Copie ou baixeCopie o código para o seu projeto ou baixe como arquivo.
Três estilos para três situações
Dataclasses fazem parte da biblioteca padrão e funcionam bem para dados internos. Modelos Pydantic validam e convertem os dados ao carregar, e o gerador acrescenta Field(alias=...) sempre que o nome em Python difere da chave do JSON, então model_validate lê os dados originais. TypedDict só descreve o formato de um dicionário, o que é prático quando você continua trabalhando com o resultado de json.loads; chaves que não são nomes válidos em Python usam a sintaxe funcional do TypedDict.
Os campos opcionais vão para o fim de cada dataclass, porque o Python exige que campos com valor padrão venham depois dos outros. Os tipos usam a forma moderna list[...], então o código precisa do Python 3.9 ou mais recente; NotRequired no TypedDict precisa do Python 3.11 ou de typing_extensions.
Perguntas frequentes
Por que o código começa com from __future__ import annotations?
Isso permite que as classes se refiram umas às outras em qualquer ordem e mantém as anotações como foram escritas. É seguro com dataclasses e Pydantic 2.
Meu JSON é enviado para algum lugar?
Não. Os tipos são gerados no seu navegador. Respostas de API com dados de clientes ou chaves nunca saem do seu dispositivo.
Como os campos opcionais são detectados?
Se o JSON tem uma lista de objetos, todos os objetos são comparados. Um campo que falta em pelo menos um objeto é marcado como opcional. Com um único objeto, todos os campos são tratados como obrigatórios.
O que acontece com campos que são sempre null?
Não dá para saber o tipo pelo exemplo, então o campo recebe um tipo genérico como unknown, object, Any ou JsonElement. Inclua um exemplo em que o campo tenha valor para obter um tipo preciso.
Por que o meu 1.0 virou número decimal?
A ferramenta olha como o número está escrito. 1.0 ou 2.5 viram double ou float, 1 vira inteiro. Se um campo é inteiro em alguns itens e decimal em outros, o tipo decimal é usado.
Posso usar o resultado em código de produção?
Sim, o código compila como está nas configurações mais comuns. Revise nomes e tipos antes do commit, porque um exemplo nunca mostra todos os valores possíveis.
Funciona sem internet?
Sim. Depois que você abre a página uma vez, ela continua funcionando sem conexão com a internet.
Solte o arquivo para ver o que dá para fazer com ele