Sobre esta ferramenta
O conversor gera um rascunho de classes de dados com tipos, utilizando a biblioteca padrão de Python. Infere a estrutura, mas não converte recursivamente dicionários JSON em instâncias dataclass. Pode acrescentar a leitura e a validação de que a aplicação necessitar.
Como utilizar
- Cole JSON; várias amostras de objetos permitem identificar campos que podem faltar.
- Defina o nome da classe de dados raiz.
- Clique em «Converter» e verifique os tipos aninhados, as uniões e a ordem dos campos obrigatórios antes dos predefinidos.
- Copie o código ou descarregue o ficheiro Python. Utilize Python 3.10+ e acrescente a lógica de desserialização.
Exemplos
- [{"id":1,"name":"Ana"},{"id":2}]: id é obrigatório e name pode ser declarado como str | None = None.
- {"matrix":[[1,2],[3,4]],"items":[]}: são inferidos list[list[int]] e list[Any], respetivamente.
- {"class":"A","first-name":"Ana"}: gera nomes válidos e documenta as chaves originais em comentários.
Regras de conversão de tipos
As cadeias usam str; os inteiros, int; os decimais e misturas numéricas, float; os booleanos, bool; os arrays, list[T]. Tipos diferentes podem formar uniões. Valores apenas null ou estruturas desconhecidas usam Any/None de forma conservadora. Os campos opcionais recebem = None e são colocados depois dos obrigatórios. Um campo obrigatório que admite null não passa automaticamente a ser opcional. As classes aninhadas são declaradas por ordem de dependências ou através de referências futuras explícitas; um objeto vazio produz uma classe vazia válida. Os campos usam snake_case válido, sufixos para palavras reservadas e nomes sem conflitos. Os comentários sobre alterações de nomes não criam mapeamento JSON. Entrada e saída: até 1 MiB cada; 64 níveis, 100000 nós, 5000 campos combinados e 256 tipos. Inteiros não seguros, números não finitos e valores arredondados para zero por subfluxo originam um erro. Os restantes decimais dependem da precisão de vírgula flutuante do navegador.
Utilizações comuns
- Criar modelos estruturados para scripts de tratamento de dados em Python.
- Organizar amostras de API em classes de dados aninhadas.
- Distinguir campos obrigatórios, opcionais e valores explicitamente nulos.
Privacidade
O JSON e o código Python são inferidos e apresentados apenas localmente. Não são enviados, executados nem guardados no armazenamento persistente do navegador.
Se quiser guardar os resultados, copie-os ou descarregue-os antes de sair da página.
Perguntas frequentes
O que é uma dataclass?
É uma classe de dados criada com um decorador da biblioteca padrão de Python, que gera métodos habituais, como a inicialização, a partir dos campos declarados.
De que versão de Python preciso?
O código requer Python 3.10+ e utiliza sintaxe moderna, como list[T] e A | None.
Porque ficam no fim os campos com valor predefinido?
Numa dataclass normal, esses campos não podem preceder campos sem valor predefinido, pois isso pode causar erros na ordem dos parâmetros de inicialização.
Como são tratadas as palavras reservadas?
Por exemplo, class passa a um nome válido como class_. Um comentário preserva a chave JSON e são resolvidos possíveis conflitos de nomes.
A dataclass recupera automaticamente os nomes JSON originais?
Não. A dataclass padrão não inclui mapeamento de chaves nem desserialização recursiva. A aplicação deve converter os campos cujo nome tenha sido alterado.