JSON para classes Java (POJO ou record)
Crie POJOs Java com getters e setters ou records do Java 16 a partir de JSON, usando @JsonProperty do Jackson para chaves incomuns e classes estáticas aninhadas. Grátis.
Tipos aninhados viram classes aninhadas estáticas. Chaves que não são nomes Java válidos recebem @JsonProperty (Jackson).
Executa totalmente no seu navegador. Seus dados nunca são enviados.
Ferramentas Relacionadas
Ver TodasO que é JSON para classe Java?
Gere classes de modelo Java a partir de um exemplo JSON, como POJOs clássicos com campos privados, getters e setters ou como records compactos do Java. Objetos aninhados viram classes estáticas aninhadas (ou records aninhados) dentro do tipo raiz.
Como usar JSON para classe Java
- Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
- Defina o Nome do tipo raiz (padrão
Root). - Escolha o Estilo de saída: Classe com getters/setters (Jackson) ou Record (Java 16 ou superior).
- Copie o código Java gerado ou clique em Baixar para salvá-lo como arquivo.
Exemplo
{"id":1,"name":"A","tags":["x"]} import java.util.List;
public class Root {
private long id;
private String name;
private List<String> tags;
public long getId() { return id; }
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public List<String> getTags() { return tags; }
public void setTags(List<String> tags) { this.tags = tags; }
} Quando usar JSON para classe Java
Use-o para criar a estrutura de DTOs em código Spring, Jackson ou Gson. Ajuste à mão tipos como datas (LocalDate, Instant) e enums, e separe as classes aninhadas em arquivos se o seu projeto preferir assim.
Como funciona JSON para classe Java
O exemplo é percorrido recursivamente e cada posição acumula os tipos que encontrou. Arrays de objetos são mesclados em um único tipo: uma chave ausente em alguns elementos vira opcional, uma chave que é null em algum lugar vira anulável, inteiros misturados com decimais viram um tipo de ponto flutuante e qualquer outra mistura de tipos recai em um tipo dinâmico. Objetos aninhados viram tipos nomeados próprios (PascalCase da chave, com chaves de array no singular: orders → Order), com sufixos numéricos quando os nomes colidem. A saída Java usa os primitivos long/double/boolean para valores obrigatórios e os tipos encapsulados Long/Double/Boolean para os anuláveis ou opcionais, String, List<T> para arrays e Object para valores dinâmicos. Os nomes de campo ficam em camelCase; quando diferem da chave JSON, uma anotação @JsonProperty("key") do Jackson é acrescentada e o import é incluído automaticamente.
Casos de Uso Comuns
- Criar DTOs para um cliente REST com Spring Boot
- Modelar uma mensagem JSON para consumidores Kafka
- Gerar records para configurações imutáveis
- Criar fixtures de teste iniciais em Java
Perguntas Frequentes
Preciso do Jackson?
Só se algumas chaves não forem nomes Java válidos; nesse caso, @JsonProperty é usado. Fora isso, as classes são Java puro e funcionam também com o Gson.
Por que long em vez de int?
Números JSON podem passar do limite do int (IDs, timestamps). O long evita overflow; troque por int se souber que os valores são pequenos.
Records funcionam com o Jackson?
Sim, o Jackson 2.12+ desserializa records Java pelo construtor canônico.