JSON to Java
Gere records Java a partir de uma amostra JSON, prontos para vincular com Jackson.
Entrada JSON
Código gerado
Digite JSON à esquerda para gerar um tipo a partir dele.
O que é JSON to Java?
Um conversor de JSON para Java transforma uma amostra de payload JSON em declarações de record Java que espelham sua estrutura. Records, adicionados no Java 16, são a substituição moderna do POJO escrito à mão: uma única linha declara os componentes e o compilador gera o construtor, acessores, equals, hashCode e toString, eliminando as cem linhas de boilerplate que uma classe de dados costumava exigir. Como o Jackson e outras bibliotecas de vinculação JSON podem construir records diretamente, este é hoje o caminho mais curto de uma resposta de API para código Java tipado. Gerá-los a partir de um payload real também evita o clássico bug de integração em que um nome de campo digitado manualmente difere da chave JSON por um único caractere e desserializa silenciosamente como null.
Como usar JSON to Java
- Cole uma resposta JSON representativa no painel esquerdo — os componentes do record correspondem exatamente às chaves daquela amostra.
- Defina um nome de record raiz acima da saída (o padrão é "Root"); cada objeto aninhado ganha seu próprio record, nomeado pela chave que o contém.
- Copie os records para o seu projeto — cada record de nível superior precisa de seu próprio arquivo se você o declarar public, ou podem ser aninhados dentro de uma única classe.
- Use o seletor de linguagem acima da saída para emitir a mesma forma como uma data class Kotlin ou um record C#.
Exemplos
Objeto plano como record
Entrada
{"id": 1, "name": "Ada", "active": true}
Saída
record Root( int id, String name, boolean active ) {}
Objeto aninhado e uma lista
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Saída
import java.util.List; record User( int id, String name, List<String> roles ) {} record Root( User user ) {}
Erros comuns
- Deixar um campo anulável como primitivo int ou boolean — um null no payload então falha a vinculação ou silenciosamente vira 0 ou false, o que é muito mais difícil de notar.
- Declarar todos os records gerados como public num único arquivo, o que não compila porque o Java permite apenas um tipo público de nível superior por arquivo.
- Esperar que um record seja mutável — os componentes são final por padrão, então código que tentava definir campos após a construção precisa de reestruturação, não de um pequeno ajuste.
Por que usar esta ferramenta
- Produz records em vez de POJOs legados, substituindo construtor, getters, equals, hashCode e toString por uma única declaração.
- Adiciona o import de java.util.List automaticamente quando o payload contém arrays, para que a saída compile sem caçar imports faltando.
- Roda inteiramente no cliente, então um payload copiado de um serviço Spring Boot ou Micronaut fica na sua máquina em vez de chegar a um servidor.