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 Todas

O 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

  1. Cole um exemplo JSON em Entrada JSON (ou clique em Carregar exemplo / Abrir arquivo).
  2. Defina o Nome do tipo raiz (padrão Root).
  3. Escolha o Estilo de saída: Classe com getters/setters (Jackson) ou Record (Java 16 ou superior).
  4. Copie o código Java gerado ou clique em Baixar para salvá-lo como arquivo.

Exemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Saída
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.

Explore mais categorias