Converter JSON em classes Java
Gera classes Java a partir de JSON: a página executa o json_typegen (WebAssembly) no modo Kotlin e reescreve cada data class como uma classe Java com campos privados, um construtor com todos os argumentos, getters e setters.
Criar um POJO para desserializar uma resposta REST com Jackson.
Quando usar
- Criar um POJO para desserializar uma resposta REST com Jackson.
- Esboçar classes DTO para um controller Spring a partir de um payload de exemplo.
Como usar
- Cole um objeto ou array JSON no editor da esquerda.
- Leia as classes: a raiz é Root e os objetos aninhados viram classes separadas com o nome da sua chave.
- Copie-as para arquivos .java separados (os imports de List e Jackson estão incluídos) e ajuste os tipos se necessário.
JSON
{
"id": 42,
"user_name": "ada",
"active": true,
"tags": ["admin", "editor"]
}Classes Java
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Root {
private Long id;
@JsonProperty("user_name")
private String userName;
private Boolean active;
private List<String> tags;
public Root(Long id, String userName, Boolean active, List<String> tags) {
this.id = id;
this.userName = userName;
this.active = active;
this.tags = tags;
}
public Long getId() {
return this.id;
}
…Detalhes e limitações
A geração roda no navegador com WebAssembly; não há configurações.
Chaves em snake_case viram campos em camelCase com @JsonProperty do Jackson; o import do Jackson e java.util.List são incluídos quando usados.
Números são mapeados para Long ou Double e booleanos para Boolean; getters booleanos usam get, não is.
Um valor null é tipado como Object, e um array de nulls como List<?>. Substitua-os por tipos concretos quando conhecer os dados reais.
FAQ
Posso converter um array JSON na raiz?
Sim. A raiz vira uma classe wrapper Root com um campo List<Root2>, e os elementos do array viram a classe Root2.
Campos opcionais são tratados?
Chaves ausentes em alguns elementos do array são detectadas, mas a saída Java descarta a marcação de opcional, então todo campo é um tipo wrapper anulável comum.
Ele gera anotações do Lombok ou records?
Não. Ele escreve classes simples com construtores, getters e setters explícitos.
Como os valores null são tipados?
Um campo que é null na amostra vira Object (private Object note;), porque nenhum tipo concreto pode ser inferido. Forneça uma amostra com um valor real para obter String, Long ou uma classe aninhada.