JSON para Java

Ferramenta online grátis de JSON para Java que converte dados JSON em classes entidade POJO Java anotadas com um clique. Suporta 4 bibliotecas de anotações de serialização (Lombok / Jackson / Gson / Fastjson), Modo Lombok @Data para código enxuto, interface Serializable e toString / equals / hashCode opcionais, 4 estratégias de nomenclatura de campos e geração automática de classes aninhadas.

Sugestões Relacionadas

Sobre JSON para Java POJO e classes entidade Java

A ferramenta JSON para Java (JSON to Java Converter) converte automaticamente estruturas de dados JSON em código de classes POJO Java padrão. Ela libera o desenvolvedor do trabalho repetitivo de escrever package / import / campos private / getter / setter manualmente, sendo ideal para converter JSON de exemplo da documentação de API em classes entidade Java prontas para compilar.

POJO (Plain Old Java Object) é a abreviatura usada pela comunidade Java para 'objetos Java comuns', com as seguintes restrições: ① Campos privados (private); ② Métodos getter / setter públicos para acesso aos campos; ③ Sem dependência de herança de frameworks (não herda de HttpServlet / EJB etc.). POJO é o portador de dados central de frameworks como Spring Boot / Hibernate / Jackson, e a essência de converter JSON para Java é tornar a estrutura dinâmica do JSON estática como um tipo POJO.

Esta ferramenta suporta 4 grandes bibliotecas de anotações de serialização: ① Gson (Google, anotação @SerializedName); ② Jackson (padrão do Spring Boot, @JsonProperty + @JsonFormat); ③ Fastjson (Alibaba, @JSONField); ④ Lombok (@Data / @Builder / @NoArgsConstructor / @AllArgsConstructor combinados). O desenvolvedor pode escolher livremente conforme o framework de serialização usado no projeto, sem necessidade de pós-processamento na IDE.

O Modo Lombok @Data é um recurso avançado da ferramenta: ao ativá-lo, a classe Java gerada tem apenas 5 linhas (@Data + campos); todos os getter / setter / equals / hashCode / toString são gerados em tempo de compilação pelo Lombok. Comparado a templates de IDE ou POJO escritos à mão, a legibilidade do código-fonte melhora em mais de 80% e o custo de manutenção cai em mais de 60%. Atenção: o projeto precisa da dependência lombok (coordenada Maven / Gradle).

Outro diferencial é o 'Download ZIP com múltiplos arquivos + organização automática do caminho do pacote': ferramentas online tradicionais só permitem copiar e colar uma única classe; esta ferramenta baixa um ZIP com a estrutura de diretórios organizada pelo nome do pacote (ex.: com/geekformat/pojo/), que pode ser importado em lote pela IDE via 'Import Project', eliminando a criação manual de diretórios de pacote.

Casos de uso

  • Desenvolvimento Android: converter JSON de resposta de API backend em classes entidade Java (POJO), com opção de anotações Gson / Moshi / Fastjson / Jackson para deserialização direta
  • Backend Spring Boot: converter JSON de exemplo de documentação de API em classes DTO / VO / Entity rapidamente, com Lombok @Data para reduzir o volume de código
  • Integração com APIs de terceiros: converter JSON de resposta de APIs externas em modelos Java correspondentes, escolhendo a anotação de serialização adequada (Jackson / Fastjson / Gson) para integração imediata
  • Arquitetura de microsserviços: unificar o modelo de dados de request/response de interfaces RPC, compartilhando a mesma definição de classes Java entre várias equipes
  • Ensino e treinamento: em cursos de estrutura de dados e aulas de Java, converter JSON de exemplo em POJO para demonstrar modelagem orientada a objetos
  • Documentação de API: embutir exemplos de classes entidade Java em documentação Swagger / OpenAPI / Knife4j
  • Preparação de testes unitários: converter fixtures JSON em classes Java e deserializar com Jackson para testes data-driven
  • Scripts de migração de dados: converter arquivos de configuração JSON em classes Java para acesso fortemente tipado na lógica de negócio
  • Integração Front-end com Mock: o backend converte o modelo JSON em Java, enquanto o front-end recebe a interface TypeScript / POJO Java correspondente
  • Revisão de código: converter o JSON retornado pela API em POJO legível, facilitando a discussão sobre nomes de campos durante o Code Review
  • Refatoração de projetos legados: refatorar código baseado em JSONObject dinâmico para acesso fortemente tipado baseado em POJO
  • Modelagem multi-papel Entity / DTO: a partir do mesmo JSON, gerar UserEntity (camada DB) + UserDTO (camada API) + UserVO (camada de visão), com anotações diferentes para cada um
  • Integração com backend snake_case: APIs backend retornam campos em snake_case; o sistema Java front-end ativa 'Converter para camelCase' + anotações Gson/Jackson para integração sem atrito
  • DTOs que precisam ser persistidos: marcar 'Implementar Serializable' para uso direto em cache Redis ou armazenamento de sessão distribuída

Como Usar

  1. Cole um objeto JSON (recomendado) ou array JSON no editor à esquerda, ou clique em 'Sample' para carregar um exemplo em chinês (com address / company / tags aninhados)
  2. Clique no botão 'Settings' na barra de ferramentas (ou no botão com o nome da classe) e, no diálogo, defina: ① Nome da classe raiz (ex.: User) e nome do pacote (ex.: com.example.entity); ② Biblioteca de anotações de serialização (Gson / Jackson / Fastjson / Lombok / Nenhuma); ③ Estilo de código (toString / equals / hashCode / construtores / Serializable); ④ Estratégia de nomenclatura de campos (Manter como está / camelCase / Tudo em minúsculas / UPPER_SNAKE)
  3. A ferramenta converte automaticamente em 400ms. As classes Java geradas aparecem à direita (cada classe em um card independente, com a biblioteca de anotações e o badge do Lombok exibidos no cabeçalho). Se houver erro de JSON, o botão 'Corrigir JSON' será exibido
  4. Verifique se os nomes de classe, nomes de campo e anotações estão conforme esperado. Caso precise ajustar, altere as chaves do JSON de origem ou abra Settings novamente para modificar as opções
  5. Quando estiver satisfeito, clique no botão 'Copiar' de uma classe específica para colar na IDE, ou clique em 'Download ZIP' para baixar todas as classes (organizadas em diretórios pelo caminho do pacote)

Recursos

  • 4 bibliotecas de anotações de serialização: Gson (@SerializedName) / Jackson (@JsonProperty + @JsonFormat para datas) / Fastjson (@JSONField) / Lombok (@Data), basta alternar o seletor
  • Modo Lombok @Data: gera automaticamente a combinação @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor, reduzindo a classe Java de ~50 linhas para ~5 linhas
  • 4 estratégias de nomenclatura de campos: Manter como está / snake_case para camelCase (user_name → userName) / Tudo em minúsculas / UPPER_SNAKE para constantes
  • Estilo de código livremente combinável: geração opcional de toString / equals / hashCode / construtor sem argumentos / construtor com todos os argumentos / implementação da interface Serializable
  • Inferência inteligente de tipos: reconhece automaticamente String / Integer / Double / Boolean / List<Object> / tipos de objetos aninhados, sem necessidade de especificar tipos de campo manualmente
  • Classes aninhadas geradas automaticamente: objetos aninhados viram classes Java independentes (nomeadas com a primeira letra maiúscula), objetos em arrays são nomeados pela regra de remover o 's' do plural
  • Genéricos de array expandidos automaticamente: arrays JSON viram Java List<T> genérico, com tipo do elemento inferido pelo primeiro item
  • Modelo completo de POJO: gera arquivo .java completo com declaração package + cabeçalho de comentário (Copyright + timestamp automático) + import + campos privados + getter/setter
  • Download de múltiplos arquivos em ZIP: todas as classes geradas organizadas por caminho de pacote (ex.: com/example/entity/User.java), empacotadas em ZIP com estrutura de diretórios
  • Nome de pacote + nome de classe personalizáveis: defina livremente o package (ex.: com.example.entity) e o nome da classe raiz (ex.: User); todos os nomes de classes são derivados da classe raiz
  • Controle de indentação: alterna entre 2 ou 4 espaços no painel direito, para se adequar ao padrão de código da equipe
  • Copiar uma única classe: cada classe Java gerada tem um botão independente 'Copiar' para colar diretamente na IDE
  • Conversão automática + correção de erros: conversão com debounce de 400ms; em caso de erro de JSON, aparece o botão 'Corrigir JSON' que corrige vírgulas extras, aspas simples, etc.
  • Dados de exemplo + upload de arquivo: exemplos em chinês integrados (com address / company / tags / scores aninhados), com suporte a arrastar ou clicar para upload de arquivos .json / .txt
  • Histórico local: persistência via localStorage das últimas 200 entradas, recuperáveis após recarregar ou fechar a página por engano
  • Execução local no navegador: toda a análise de JSON, geração de Java e empacotamento em ZIP são feitos em JavaScript no seu navegador; nenhum dado é enviado para servidores

Exemplos de Código

Java: Desserializando o POJO gerado com Jackson

java

Uso mais comum em projetos Spring Boot: desserializar a resposta de uma API com Jackson usando o POJO gerado por esta ferramenta.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.geekformat.pojo.User;
import com.geekformat.pojo.Address;

public class ApiClient {
    private final ObjectMapper objectMapper = new ObjectMapper();

    public User getUser(int userId) throws Exception {
        // 1) Call API to get JSON string
        String json = httpClient.get("https://api.example.com/users/" + userId);

        // 2) Deserialize directly into the POJO generated by this tool
        User user = objectMapper.readValue(json, User.class);

        // 3) Strongly-typed field access (compile-time type checking)
        System.out.println("User: " + user.getName());
        if (user.getAddress() != null) {
            System.out.println("City: " + user.getAddress().getCity());
        }
        return user;
    }

    public static void main(String[] args) throws Exception {
        ApiClient client = new ApiClient();
        User user = client.getUser(123);
        System.out.println(user.getName());
    }
}

Java: Uso de Lombok @Data + @Builder

java

Código gerado no modo Lombok desta ferramenta, com uso correspondente: construção encadeada via builder; o POJO completo é gerado em tempo de compilação pelo Lombok.

import com.geekformat.pojo.User;

public class UserService {

    public User createUser() {
        // Lombok @Builder pattern: chained calls, more intuitive than traditional setters
        User user = User.builder()
            .id(1)
            .userName("Alice")
            .email("alice@example.com")
            .isActive(true)
            .createdAt("2026-07-08T10:00:00.000Z")
            .build();

        System.out.println(user);
        // Lombok @Data auto-generates toString():
        // User(id=1, userName=Alice, email=alice@example.com, ...)

        return user;
    }

    public boolean isValid(User user) {
        // Lombok @Data auto-generates equals() and hashCode()
        return user != null && user.getId() != null;
    }
}

/*
 * Corresponding pom.xml dependency:
 * <dependency>
 *     <groupId>org.projectlombok</groupId>
 *     <artifactId>lombok</artifactId>
 *     <version>1.18.30</version>
 *     <scope>provided</scope>
 * </dependency>
 */

Linha de comando: Descompactar o ZIP baixado e importar na IDE

bash

Esta ferramenta baixa um ZIP (organizado pelo caminho do pacote); após descompactar, pode ser importado diretamente na IDE.

# 1) After downloading the ZIP (file name like User.zip)
unzip User.zip -d src/main/java/

# 2) Check the directory structure
tree src/main/java/
# src/main/java/
# └── com/
#     └── example/
#         └── entity/
#             ├── User.java
#             ├── Address.java
#             └── Company.java

# 3) In IntelliJ IDEA: right-click the com directory -> "Mark Directory as" -> "Sources Root"
#    Or in Eclipse: File -> Import -> Existing Projects into Workspace

# 4) Use directly in a Spring Boot project
#    UserController.java
#    @PostMapping("/users")
#    public ResponseEntity<User> createUser(@RequestBody User user) {
#        userService.save(user);
#        return ResponseEntity.ok(user);
#    }

# 5) Verify compilation
mvn compile
# [INFO] BUILD SUCCESS

# 6) (Optional) When using Lombok, remember to add the lombok dependency in pom.xml
#    <dependency>
#        <groupId>org.projectlombok</groupId>
#        <artifactId>lombok</artifactId>
#    </dependency>

Perguntas frequentes

Como converter JSON em classe POJO Java?

Cole o conteúdo JSON na caixa de entrada; a ferramenta converte automaticamente em 400ms, ou clique no botão 'Convert' na barra de ferramentas. Após a conversão, as classes Java geradas aparecem à direita, cada uma com um botão 'Copiar' independente. Clique em 'Download ZIP' na barra de ferramentas para baixar todas as classes de uma vez.

Quais estruturas de JSON são suportadas?

Suporta duas estruturas: ① Objeto JSON (vira a classe raiz, gerando public class RootBean { ... }); ② Array JSON (o primeiro objeto do array serve como modelo da classe raiz). Objetos aninhados são processados recursivamente em classes independentes; objetos em arrays são processados recursivamente como classes correspondentes aos tipos de elementos da List.

O que o conteúdo da classe Java gerada inclui?

Cada arquivo .java gerado inclui: ① Cabeçalho de comentário (Copyright + timestamp automático); ② Declaração package; ③ Instruções import (com List / Objects / Serializable / Gson / Jackson / Fastjson / Lombok etc. importados sob demanda); ④ Declaração public class (com implements Serializable opcional); ⑤ Campos privados (private, com anotações quando configurado); ⑥ Métodos getter / setter padrão (ou apenas anotações Lombok); ⑦ Métodos toString / equals / hashCode opcionais. Pronto para compilar com javac.

Suporta geração de anotações Gson / Jackson / Fastjson / Lombok?

Sim. No diálogo Settings, no grupo 'Biblioteca de anotações de serialização', escolha: ① Gson (adiciona @SerializedName("chave original") em cada campo); ② Jackson (adiciona @JsonProperty em cada campo, mais @JsonFormat em campos de data); ③ Fastjson (adiciona @JSONField(name="chave original") em cada campo); ④ Lombok (adiciona @Data na classe, com @Builder / @NoArgsConstructor / @AllArgsConstructor opcionais); ⑤ Sem anotações (padrão, POJO puro). A biblioteca escolhida importa os pacotes automaticamente.

Como fica o código gerado no Modo Lombok @Data?

Com Lombok ativado, a classe Java gerada fica muito mais enxuta. Por exemplo, a classe User com Lombok tem apenas 5 linhas: @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + declaração de campos. Todos os getter / setter / equals / hashCode / toString são gerados em tempo de compilação pelo Lombok, melhorando muito a legibilidade. Atenção: o projeto precisa incluir a dependência do Lombok (coordenada lombok no pom.xml / build.gradle) e a IDE precisa ter o plugin Lombok instalado.

Como converter nomes de campos snake_case para camelCase?

No diálogo Settings, no grupo 'Estratégia de nomenclatura de campos', selecione o modo 'Converter para camelCase'. A ferramenta converte automaticamente os nomes de campo de snake_case para o estilo recomendado em Java. Exemplo: user_name → userName, created_at → createdAt, is_active → isActive. Se você também selecionou anotações Gson/Jackson/Fastjson, o valor original em snake_case é preservado na anotação, garantindo o mapeamento correto na deserialização.

Como objetos JSON aninhados são tratados?

A ferramenta cria classes Java independentes para cada objeto aninhado. Regra de nomenclatura: a chave do objeto aninhado tem a primeira letra maiúscula como nome da classe (ex.: address → Address); chaves de objetos em array têm o 's' final removido e a primeira letra maiúscula (ex.: users → User). Todas as classes aninhadas incluem campos completos + getter/setter + anotações.

Campos de array são convertidos automaticamente em List?

Sim. Campos de array JSON são convertidos automaticamente em Java List<T> genérico, com o tipo do elemento inferido pelo primeiro item. Exemplo: ["a","b","c"] → List<String>; [{...},{...}] → List<User> (User é uma nova classe nomeada pela chave); array vazio [] gera List<Object> por padrão.

Como alterar o nome da classe raiz e o nome do pacote?

Há um botão Settings no canto superior direito da barra de ferramentas (ou um botão com o nome da classe). Clicando, abre um diálogo para definir: ① Nome da classe raiz (padrão JsonRootBean); ② Nome do pacote (padrão com.geekformat.pojo). Após a alteração, todos os nomes das classes são atualizados e a estrutura de diretórios no ZIP é reorganizada conforme o pacote.

O download é de um único arquivo .java ou de um pacote ZIP?

É baixado um pacote ZIP (JsonRootBean.zip), contendo todas as classes Java geradas, organizadas em diretórios pelo caminho do pacote. Por exemplo, com o pacote com.geekformat.pojo, a estrutura no ZIP é: com/geekformat/pojo/JsonRootBean.java, com/geekformat/pojo/Address.java, etc. Pode ser descompactado com unzip ou importado diretamente pela IDE.

Posso copiar uma única classe diretamente para a IDE?

Sim. Cada classe Java gerada é exibida como um card independente, com um botão 'Copiar' no canto superior direito. Ao clicar, todo o código da classe (incluindo package + import + definição da classe + campos + anotações + getter/setter) é copiado para a área de transferência, pronto para colar no IntelliJ IDEA / Eclipse / VS Code.

Como gerar o padrão Builder com Lombok @Builder?

No diálogo Settings, no grupo 'Estilo de código': ① Marque 'Usar Lombok @Data para simplificar o código' (isso ativa automaticamente a biblioteca lombok); ② Marque 'Gerar padrão Builder com @Builder'. A classe gerada terá @Builder automaticamente. Uso: User user = User.builder().id(1).name("Alice").build();

Como fazer a classe gerada implementar a interface Serializable?

No diálogo Settings, no grupo 'Estilo de código', marque 'Implementar interface Serializable'. A ferramenta automaticamente: ① Adiciona implements Serializable na declaração da classe; ② Importa java.io.Serializable. Ideal para cenários em que o POJO precisa ser gravado em arquivo, transmitido via rede ou armazenado em cache Redis.

Qual a diferença entre JSON para Java e JSON para TypeScript?

Ambos convertem JSON em definições de tipo da linguagem correspondente, mas com focos diferentes: ① Java gera classes POJO completas (com package + import + campos private + getter/setter), prontas para compilar e executar; ② TypeScript gera declarações interface ou type, que descrevem apenas a estrutura dos dados, sem implementação. A escolha depende da sua linguagem de desenvolvimento.

O código gerado pode ser usado em projetos Spring Boot?

Sim. As classes POJO geradas seguem a especificação padrão de Java Bean (campos privados + getter/setter), compatíveis com a deserialização Jackson do Spring Boot, binding de formulários MVC e definição de entidades JPA (manual). Para usar Lombok (@Data / @Builder), basta ativar no diálogo Settings, sem refatoração adicional na IDE.

O que fazer se o JSON tiver erro de formato?

A ferramenta detecta automaticamente a validade do JSON. Em caso de erro, exibe uma mensagem em vermelho à direita e oferece o botão 'Corrigir JSON'. Ao clicar, corrige erros comuns: ① Vírgula extra no final; ② Aspas simples trocadas por aspas duplas; ③ Chaves sem aspas recebem aspas; ④ Remoção de comentários. Após a correção, a conversão para classes Java é feita diretamente.

Os dados são enviados para algum servidor? A privacidade está garantida?

Execução 100% local no navegador. Toda a análise de JSON, geração de classes Java e empacotamento ZIP são feitos em JavaScript (JSZip) no seu navegador. Os dados JSON inseridos e o código Java gerado não são enviados a nenhum servidor, nem registrados ou armazenados em cache na nuvem. Você pode usar tranquilamente JSONs sensíveis com campos internos, estruturas de negócio não publicadas e respostas de API não públicas. Fechar a página apaga tudo.

A ferramenta trava com JSON grandes de 10 mil linhas?

Não há limite explícito de linhas, mas a análise e a renderização de JSON muito grandes ficam lentas no navegador. Sugestões: ① Divida o JSON e converta em partes; ② Foque em um nível aninhado de cada vez; ③ Para gerar 100+ classes em lote, considere plugins de geração de código da IDE (MyBatis Generator, MapStruct) ou bibliotecas dedicadas de geração Java (JavaPoet / JOOQ).

Solução de Problemas

Mensagem 'Insira dados JSON' ou erro semelhante

A caixa de entrada à esquerda está vazia ou contém apenas espaços. Certifique-se de colar um JSON válido, clique em 'Sample' para carregar um exemplo em chinês, ou clique em 'Upload' para selecionar um arquivo .json / .txt.

Mensagem 'Unexpected token ... in JSON at position N'

JSON em formato inválido. Causas comuns: ① Vírgula extra no final (ex.: {"a":1,}); ② Aspas simples em vez de duplas; ③ Sintaxe de objeto JS (ex.: {key: value}) em vez de JSON (ex.: {"key": "value"}). Clique no botão 'Corrigir JSON' para corrigir parte dos erros automaticamente.

As anotações geradas não correspondem ao framework do projeto

No diálogo Settings, no grupo 'Biblioteca de anotações de serialização', troque a biblioteca: ① Spring Boot → Jackson; ② Android → Gson; ③ Backend Java Alibaba → Fastjson; ④ Para enxugar o código → Lombok; ⑤ Sem anotações → escolha 'Sem anotações'. Após trocar, todas as anotações dos campos e os imports são regenerados.

Compilação do Lombok falha com 'cannot find symbol'

O projeto não tem a dependência do Lombok. Adicione no pom.xml: `<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>`. A IDE também precisa do plugin Lombok (IntelliJ IDEA → Plugins → pesquise Lombok → Install).

Quero gerar sem Lombok, mas com código enxuto

No diálogo Settings, não marque Lombok @Data e use o modo tradicional mantendo a concisão: ① Marque 'Gerar construtor sem argumentos' + 'Gerar construtor com todos os argumentos' + 'Gerar toString / equals / hashCode'; ② A equipe pode usar Postfix Completion da IDE (templates .var / .field do IntelliJ) para gerar em lote. Ou use a função nativa de geração de POJO da IDE (Alt+Insert → Constructor / Getter / Setter).

Após converter snake_case para camelCase, a IDE mostra 'cannot find symbol'

'Converter para camelCase' altera apenas o nome do campo, mas o Lombok @Data gera getter/setter com base no novo nome (ex.: user_name → userName → getUserName / setUserName), então o código está correto. Se ainda houver erro, verifique: ① Se a IDE recompilou com sucesso; ② Se o plugin Lombok está instalado e ativado; ③ Limpe o cache da IDE (File → Invalidate Caches).

O nome da classe do objeto aninhado não é o que eu queria (ex.: categories nomeada como Categori)

A ferramenta usa a regra 'remover s do final + primeira letra maiúscula' para objetos em array, o que não lida bem com plurais irregulares como categories. Sugestões: ① Renomeie a chave do JSON de origem para o singular (ex.: categories → category); ② Após gerar, use Rename da IDE para renomear a classe (ajustando também todas as referências).

A estrutura de diretórios do ZIP descompactado está incorreta

Os diretórios no ZIP são organizados pelo package configurado (padrão com/geekformat/pojo/). Se a estrutura após descompactar estiver incorreta: ① Altere o nome do pacote (ex.: com.example) e baixe novamente; ② Use unzip -d src/main/java para especificar o diretório de extração; ③ Ou abra a pasta descompactada na IDE via File → Open.

Falha na deserialização de campo de data no modo Jackson

A ferramenta detecta automaticamente strings ISO 8601 como "2026-07-08T10:00:00.000Z" e adiciona @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"). Se o formato da data for diferente (ex.: "2026-07-08"), você pode: ① Usar o formato ISO 8601 no JSON de origem; ② Ajustar manualmente o parâmetro pattern do @JsonFormat após a geração.

Caracteres do nome de arquivo em chinês no ZIP aparecem corrompidos no Windows

Os nomes de arquivo do ZIP e das classes Java são em inglês (apenas ASCII), sem problemas de codificação. Se o JSON de origem tiver chaves em chinês (gerando campos em chinês), a IDE pode avisar sobre a nomenclatura, mas não haverá corrupção. Recomendamos alterar as chaves JSON para inglês (camelCase), seguindo a convenção Java.

A página trava ao gerar 100+ classes aninhadas

Não há limite explícito de classes, mas a renderização de DOM muito grande fica lenta no navegador. Sugestões: ① Divida o JSON em módulos independentes e converta separadamente; ② Use ferramentas de geração de código da IDE (plugin JSON to POJO do IntelliJ); ③ Mantenha a profundidade de aninhamento em até 6 níveis; caso contrário, refatore a estrutura do JSON.

Um array numérico foi gerado como List<Object>

Geralmente acontece quando o array está vazio [] e o padrão é List<Object>. Adicione pelo menos um elemento de exemplo no JSON de origem (ex.: [1,2,3]) para que a ferramenta infira o tipo pelo primeiro elemento; ou, após gerar, altere manualmente List<Object> para List<Integer>.

Campo com valor null gerado como tipo Object

Valores null em JSON são inferidos pela ferramenta como Object (pois o tipo real não pode ser determinado). Essa é uma escolha segura para evitar erros de inferência. Se você souber o tipo, atribua um valor de exemplo ao campo no JSON de origem (ex.: "field": "" para inferir String) e remova o valor após gerar.

A estrutura de diretórios do ZIP não foi atualizada após alterar o package

Após alterar o package, é preciso clicar novamente no botão 'Convert' (ou a alteração aciona a conversão automática após 400ms). Quando o diálogo Settings é fechado, na próxima mudança na entrada a ferramenta regenera todos os arquivos com o novo nome de pacote.

Como remover o cabeçalho de comentário gerado automaticamente (ex.: Copyright)

A ferramenta gera por padrão um cabeçalho com Copyright + timestamp automático. Se não quiser, use Find & Replace global da IDE para removê-lo, ou altere a função generateFileHeader no código-fonte da ferramenta (requer novo deploy).

Como integrar backend snake_case com front-end Java

Cenário típico: API backend (ex.: Python / Go) retorna campos em snake_case, e o sistema Java front-end precisa de campos em camelCase. Passos: ① No diálogo Settings escolha a biblioteca Jackson ou Gson; ② Selecione a estratégia de nomenclatura 'Converter para camelCase'; ③ A ferramenta gera: nome do campo = userName (camelCase), valor da anotação = "user_name" (chave original preservada); a deserialização mapeia pela anotação e o acesso segue a convenção Java.

Glossário

POJO
Plain Old Java Object, Objeto Java Comum. Restrições: campos privados + getter/setter públicos + sem dependência de framework. Esta ferramenta gera POJOs padrão.
JavaBean
Outra denominação usada pela comunidade Java para POJO. Exige construtor público sem argumentos + campos privados + getter/setter públicos. As classes geradas por esta ferramenta seguem a especificação JavaBean.
DTO (Data Transfer Object)
Objeto de transferência de dados, usado para transporte de dados entre processos (API / RPC). Os POJOs gerados por esta ferramenta podem ser usados diretamente como DTO.
VO (Value Object)
Objeto de valor, geralmente usado na camada de visão (dados retornados pelo Controller ao front-end). Os POJOs gerados por esta ferramenta também se aplicam.
Entity
Objeto entidade, corresponde a uma linha de uma tabela do banco de dados. Os POJOs gerados podem servir como classe base @Entity do JPA / Hibernate (após adicionar as anotações manualmente).
@SerializedName
Anotação de mapeamento de campos da biblioteca Gson. No modo Gson desta ferramenta, @SerializedName("chave original") é adicionado automaticamente a cada campo, garantindo o mapeamento correto na deserialização.
@JsonProperty
Anotação de mapeamento de campos da biblioteca Jackson. No modo Jackson desta ferramenta, @JsonProperty("chave original") é adicionado a cada campo; campos de data recebem @JsonFormat adicional para definir o formato de serialização.
@JSONField
Anotação de mapeamento de campos da biblioteca Fastjson da Alibaba. No modo Fastjson desta ferramenta, @JSONField(name = "chave original") é adicionado automaticamente a cada campo.
Lombok @Data
Anotação composta da biblioteca Lombok, equivalente a @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor. No modo Lombok desta ferramenta, essa anotação é adicionada à classe de uma só vez.
Lombok @Builder
Anotação de padrão Builder do Lombok. Quando ativada nesta ferramenta, é adicionada automaticamente, gerando um método builder() encadeável.
Serializable
Interface marcadora do Java. Ao implementá-la, o objeto pode ser serializado (ex.: gravado em arquivo / transmitido pela rede / cache Redis). Ao marcar 'Implementar Serializable' nesta ferramenta, implements Serializable é adicionado e java.io.Serializable é importado automaticamente.
Classe aninhada (Nested Class)
Classe Java independente gerada automaticamente pela ferramenta para objetos JSON aninhados. Regra de nomenclatura: primeira letra maiúscula da chave do objeto aninhado (ex.: address → Address).
Genérico List
Interface do framework de coleções do Java. A ferramenta converte arrays JSON em List<T>, com T inferido pelo primeiro item do array (ex.: ["a"] → List<String>).
getter / setter
Métodos de acesso padrão do Java Bean. O getter é nomeado getXxx() retornando o campo; o setter é nomeado setXxx(value) atribuindo o campo. No modo Lombok são gerados por @Data; no modo tradicional a ferramenta os gera explicitamente.
Declaração package
Primeira linha de código não-comentário de um arquivo Java, usada para declarar o namespace da classe. Esta ferramenta gera o package conforme o nome definido pelo usuário e organiza o ZIP em diretórios com/xxx/yy.
snake_case → camelCase
Conversão de estratégia de nomenclatura de campos. A ferramenta suporta converter user_name → userName, is_active → isActive, created_at → createdAt, seguindo as convenções de nomenclatura Java.
JSZip
Biblioteca JavaScript de empacotamento ZIP no navegador. Esta ferramenta a usa para gerar arquivos ZIP diretamente no navegador, sem processamento no servidor.
Histórico localStorage
Armazenamento local de chave-valor do navegador (capacidade ~5-10MB). Esta ferramenta usa localStorage para persistir as últimas 200 entradas.
Debounce
Técnica de otimização de performance no front-end: agrupa eventos de alta frequência em uma única execução. Esta ferramenta usa debounce de 400ms para evitar travamentos na análise de arquivos grandes.
tryFixJSON
Função interna de correção de JSON desta ferramenta: corrige automaticamente vírgulas extras no final, troca aspas simples por duplas, adiciona aspas em chaves sem aspas e remove comentários.

Tabela de mapeamento de tipos JSON para tipos Java

Tabela de correspondência entre os tipos de dados JSON inferidos automaticamente e os tipos Java gerados:

Exemplo de valor JSONMétodo de detecçãoTipo Java geradoValor padrão do campo
nullvalue === nullObjectnull
true / falsetypeof value === 'boolean'Booleanfalse
42typeof value === 'number' && Number.isInteger(value)Integer0
3.14typeof value === 'number' && !Number.isInteger(value)Double0.0
"hello"typeof value === 'string'Stringnull
[...] (array vazio)Array.isArray(value) && value.length === 0List<Object>new ArrayList<>()
["a","b"]Array.isArray(value) && typeof value[0] === 'string'List<String>new ArrayList<>()
[1,2,3]Array.isArray(value) && typeof value[0] === 'number'List<Integer>new ArrayList<>()
[{...},{...}]Array.isArray(value) && typeof value[0] === 'object'List<Xxx>new ArrayList<>()
{...} (objeto aninhado)typeof value === 'object' && !Array.isArray(value)Xxx (classe independente)new Xxx()

Comparação das 4 bibliotecas de anotações de serialização

Comparação das 4 bibliotecas de anotações de serialização JSON Java suportadas pela ferramenta. Escolha conforme o framework usado no projeto:

BibliotecaAnotação geradaImport automáticoCenário de uso
Sem anotaçõesNenhuma (POJO puro)NenhumCenários sem dependência de framework; é preciso desserializar manualmente com bibliotecas genéricas como jackson-databind
Gson@SerializedName("user_name")import com.google.gson.annotations.SerializedName;Aplicações Android, ecossistema Gson do Google, Retrofit + Gson
Jackson@JsonProperty("user_name") + @JsonFormat em campos de dataimport com.fasterxml.jackson.annotation.JsonProperty; + JsonFormatFramework padrão de serialização do Spring Boot, APIs backend web
Fastjson@JSONField(name = "user_name")import com.alibaba.fastjson.annotation.JSONField;Ecossistema Alibaba, sistemas internos Java, cenários de deserialização de alta performance
Lombok@Data no nível da classe (+ @Builder / @NoArgsConstructor / @AllArgsConstructor opcionais)import lombok.Data; (+ outros)Projetos que precisam reduzir boilerplate; combinável com qualquer biblioteca de serialização

Comparação das 4 estratégias de nomenclatura de campos

As 4 estratégias de conversão de nomenclatura de campos suportadas pela ferramenta, otimizadas para diferentes origens de JSON:

ModoExemplo de entradaNome de campo Java geradoCenário
Manter como estáuser_nameuser_nameQuando os campos JSON já seguem a convenção Java (ex.: APIs internas) ou a equipe prefere snake_case
Converter para camelCaseuser_nameuserNameEstilo de nomenclatura recomendado em Java; APIs backend em snake_case (ex.: Python / Go)
Tudo em minúsculasUserNameusernameIntegração com campos especiais de banco de dados (pouco comum)
UPPER_SNAKEuser_nameUSER_NAMEDefinição de constantes Java (public static final); não recomendado para campos comuns de POJO

Comparação: Modo Lombok @Data vs POJO tradicional

Comparação de linhas de código, legibilidade e dependências entre os dois estilos:

AspectoModo Lombok @DataModo POJO tradicional
Linhas de código-fonte~5 linhas (4 anotações + campos)~50 linhas (4-5 linhas de getter/setter por campo + classe)
LegibilidadeMuito alta (todos os campos e anotações visíveis de imediato)Média (muito boilerplate)
Produto compiladoBytecode completo (gerado pelo processador Lombok na IDE / javac)Bytecode completo (compilação direta)
Dependência em runtimeRequer dependência lombok (tempo de compilação)Sem dependência extra
Suporte na IDERequer plugin Lombok (IntelliJ / Eclipse)Suporte nativo
Custo de manutenção do códigoBaixo (basta adicionar o campo)Alto (getter/setter manuais para cada campo)
Equipe adequadaProjetos médios e grandes que já adotaram LombokProjetos que rejeitam Lombok; manutenção de código legado

Privacy & Security

Nesta ferramenta de JSON para Java, toda a análise de JSON, geração de classes Java e empacotamento em ZIP são feitos inteiramente em JavaScript (JSZip) no seu navegador local. Os dados JSON inseridos e o código Java gerado não são enviados a nenhum servidor, nem registrados, armazenados em cache ou guardados na nuvem. Você pode usar com tranquilidade JSONs sensíveis que contenham campos internos, estruturas de negócio não publicadas e respostas de API não públicas. Fechar a página apaga todos os dados.

Authoritative References