Geração de tipos

JSON para Javamodelos a partir de respostas da API

Uma lista na entrada gera o modelo dos elementos. Leia a resposta inteira como List<Root>.

JSON para Java

Entrada JSON

Análise e geração no navegador. A entrada não é enviada nem armazenada.

Código gerado

Opções de geração

Jackson 2.x; Kotlin requer seu módulo. Inferência de tipos não valida dados. Confira as opções do decodificador abaixo.

Entrada em array: o arquivo define o elemento. Leia List<Root>.

2 classes · 2 campos nullable

JSON para Java ajuda quando você tem a resposta de uma API, mas ainda não tem as classes. Coloque amostras diferentes em um array para revelar campos ausentes no primeiro registro e valores null.

Este gerador de POJO entrega um rascunho. Os exemplos não comprovam quais campos são obrigatórios nem todos os valores que a API poderá retornar.

Por que usar JSON para Java

Considerar todos os registros

JSON para Java combina os campos dos objetos na mesma posição de cada array. Um campo presente apenas no segundo registro continua no modelo; ausência e null influenciam o tipo gerado.

Dois cartões com campos diferentes convergem para um modelo, com um marcador vazio para um campo ausente.

Preservar a chave original

Símbolos e palavras reservadas precisam de identificadores válidos nas classes Java. As anotações Jackson mantêm a ligação com a chave original. Colisões recebem sufixos numéricos estáveis.

Chaves irregulares se ligam por cores a propriedades válidas e a uma classe aninhada.

Confira as amostras antes de gerar

01

Reúna variações relevantes

Use um objeto ou um array não vazio contendo apenas objetos. O resultado descreve o elemento da lista e não inventa uma propriedade de envelope. Arrays internos são analisados recursivamente.

02

Defina como tratar null

O modo observado amplia campos ausentes ou null. O modo global usa wrappers Java e propriedades Kotlin com ? e padrão null. Ao desativar o aninhamento, as classes auxiliares ficam no nível superior do mesmo arquivo.

03

Exporte a versão atual

A geração automática aguarda 350 ms. Desative-a para usar Gerar ou Ctrl/Cmd+Enter. Alterações bloqueiam a exportação imediatamente. Limpar e carregar o exemplo guardam uma restauração de entrada, opções e resultado.

Campos, tipos e arquivos

Números sem arredondamento inicial

Inteiros comuns na faixa de 64 bits com sinal usam long/Long; os maiores usam BigInteger. Decimais e notação exponencial, como 1.0 e 1e3, usam BigDecimal. A inferência não passa pelo ponto flutuante do JavaScript.

Parâmetros Kotlin

A mesma página alterna para data classes Kotlin. Propriedades ausentes ou null recebem T? = null; as demais não recebem valor padrão. Um objeto raiz vazio gera uma class comum, sem parâmetros.

Nomes e anotações

Os nomes usam camelCase ASCII e sufixos para conflitos. JsonProperty aparece nos campos Java e nos parâmetros e getters Kotlin. Tipos totalmente qualificados evitam conflitos com nomes raiz como String ou List.

Um arquivo de código

Java usa campos públicos e classes static aninhadas por padrão; Kotlin usa classes de dados aninhadas. Sem aninhamento, as auxiliares Java não são public. Todos os modelos continuam no mesmo arquivo para download.

Requisitos e limites

Configure o Jackson
As anotações são para Jackson 2.x. Kotlin também requer jackson-module-kotlin e kotlin-reflect. Ative FAIL_ON_NULL_FOR_PRIMITIVES e StrictNullChecks para verificar null. Referências Java continuam aceitando null; o modelo não é um validador.
Tipos genéricos e precisão
Valores mistos ou apenas null viram Object/Any; objetos internos vazios viram Map. Arrays vazios não fornecem um tipo de elemento. Ative USE_BIG_INTEGER_FOR_INTS e USE_BIG_DECIMAL_FOR_FLOATS nessas posições. Desative FAIL_ON_EMPTY_BEANS ao serializar uma classe raiz vazia.
Chaves não representáveis
Um nome vazio em JsonProperty significa nome padrão, portanto chaves JSON vazias são recusadas. Sem anotações, qualquer chave que precise de renomeação também causa erro. Use Map ou um decodificador próprio nesses casos.
Amostras não são esquemas
Não há JSON Schema, OpenAPI, Lombok, record, Gson nem inferência de datas ou enums. Strings continuam strings. Raízes escalares e arrays raiz vazios ou mistos são recusados. Ausência e null explícito não são estados separados.
Orçamento de processamento
Somente JSON estrito, sem comentários, chaves repetidas, reparo, URL ou importação de arquivos. Limites: 500.000 caracteres de entrada, 50.000 nós, profundidade 40, 100 campos por objeto, 200 classes, 1.000 caracteres por chave/número, expoente absoluto 10.000 e 1.000.000 de caracteres de saída.

Dúvidas sobre JSON para Java

O código funciona com Spring Boot?

JSON para Java produz modelos para Jackson 2.x. Acrescente pacote e dependências no projeto. Em Kotlin, confira o módulo e as opções de null. Não geramos configuração para todas as versões do Spring Boot.

Ele processa arrays de objetos?

Sim, desde que não estejam vazios e contenham somente objetos. Todas as amostras contribuem para o modelo. Leia a resposta completa como List<Root>, pois a classe gerada representa um elemento.

Devo usar Jackson ou Gson?

Esta página gera anotações Jackson. O modelo Kotlin foi pensado para jackson-module-kotlin; Gson não aplica os mesmos contratos de null e parâmetros padrão. Uma troca de biblioteca exige adaptar e testar o código.

Posso habilitar Lombok?

Não há opção Lombok neste gerador. O Java usa campos públicos, e o Kotlin usa propriedades de construtor. Se seu projeto exige getters, setters ou builders, adapte o arquivo após revisar os tipos.

Como os números são tipados?

Inteiros comuns usam long/Long ou BigInteger conforme a faixa. Decimais e expoentes usam BigDecimal. Em Object/Any, ative também as opções de precisão do Jackson descritas acima.

Encontrou um caso de inferência a melhorar?

Valide o modelo no projeto

Use JSON para Java com respostas representativas, revise os campos nullable e as anotações e compile o arquivo exportado com as configurações Jackson do seu projeto.