Skip to content
jsonforge.app

JSON to Java

Gere records Java a partir de uma amostra JSON, prontos para vincular com Jackson.

Entrada JSON

Loading editor…

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

  1. Cole uma resposta JSON representativa no painel esquerdo — os componentes do record correspondem exatamente às chaves daquela amostra.
  2. 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.
  3. 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.
  4. 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.

Perguntas frequentes