JSON para classes Java

Cole um JSON e receba records Java ou classes clássicas com getters e setters. As anotações @JsonProperty do Jackson mantêm as chaves que não batem com os nomes em Java.

Grátis e privado. Tudo funciona no seu navegador e nada é enviado.

Como funciona

  1. Cole o seu JSONCole uma resposta da sua API ou abra um arquivo .json. Use Exemplo para ver como funciona.
  2. Ajuste as opçõesDefina o nome do tipo principal e as opções desta linguagem. O código se atualiza enquanto você digita.
  3. Copie ou baixeCopie o código para o seu projeto ou baixe como arquivo.

Records ou POJOs clássicos

Records, disponíveis desde o Java 16, são o jeito mais curto de modelar um objeto JSON, e o Jackson lê records sem configuração extra. Se o seu projeto usa uma versão mais antiga do Java ou um framework que precisa de setters, escolha classes: você recebe campos privados com getters e setters para cada propriedade.

Os nomes dos campos ficam em camelCase. Números e booleanos obrigatórios usam tipos primitivos como int e boolean, enquanto os opcionais ou anuláveis usam Integer, Long ou Boolean para poder guardar null. Datas ISO viram LocalDate, LocalDateTime ou OffsetDateTime; o Jackson precisa do módulo jackson-datatype-jsr310 para lê-las. Todos os tipos ficam num só arquivo: o tipo principal é public e os outros são package private, então o nome do arquivo precisa ser igual ao do tipo principal.

Perguntas frequentes

Funciona com o Gson?

Sim, as classes também funcionam com o Gson. Desative as anotações Jackson e use @SerializedName onde o nome em Java difere da chave.

Meu JSON é enviado para algum lugar?

Não. Os tipos são gerados no seu navegador. Respostas de API com dados de clientes ou chaves nunca saem do seu dispositivo.

Como os campos opcionais são detectados?

Se o JSON tem uma lista de objetos, todos os objetos são comparados. Um campo que falta em pelo menos um objeto é marcado como opcional. Com um único objeto, todos os campos são tratados como obrigatórios.

O que acontece com campos que são sempre null?

Não dá para saber o tipo pelo exemplo, então o campo recebe um tipo genérico como unknown, object, Any ou JsonElement. Inclua um exemplo em que o campo tenha valor para obter um tipo preciso.

Por que o meu 1.0 virou número decimal?

A ferramenta olha como o número está escrito. 1.0 ou 2.5 viram double ou float, 1 vira inteiro. Se um campo é inteiro em alguns itens e decimal em outros, o tipo decimal é usado.

Posso usar o resultado em código de produção?

Sim, o código compila como está nas configurações mais comuns. Revise nomes e tipos antes do commit, porque um exemplo nunca mostra todos os valores possíveis.

Funciona sem internet?

Sim. Depois que você abre a página uma vez, ela continua funcionando sem conexão com a internet.