O que é JSON e para que serve em Java?
JSON (JavaScript Object Notation) é um formato leve de troca de dados, fácil de ler por humanos e fácil de processar por programas. No desenvolvimento Java moderno, o JSON é usado em toda parte: desde arquivos de configuração até requisições de API para serviços web.
Trabalhar com JSON em Java envolve duas ações principais:
- Serialização — conversão de um objeto Java em uma string JSON.
- Parsing (desserialização) — conversão de uma string JSON de volta para um objeto Java.
Nesta aula, vamos abordar como realizar essas operações usando duas bibliotecas populares: Jackson e Gson. Os exemplos são adequados até mesmo para desenvolvedores iniciantes.
Preparação do projeto e inclusão das bibliotecas
Para começar, precisaremos de um projeto Java. Usaremos o Maven para gerenciar as dependências. Crie um novo projeto Maven e adicione as seguintes dependências no arquivo pom.xml:
Adicionando Jackson
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.1</version></dependency>Adicionando Gson
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version></dependency>Ambas as bibliotecas podem ser usadas simultaneamente em um mesmo projeto. Após atualizar o Maven, as dependências serão baixadas automaticamente.
Criando uma classe Java para o exemplo
Para demonstração, vamos criar uma classe simples User, que será serializada e parseada:
public class User { private String name; private int age; private String email;
// Construtor vazio obrigatório para desserialização public User() {}
public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; }
// Getters e Setters (obrigatórios para Jackson) public String getName() { return name; } public void setName(String name) { this.name = name; }
public int getAge() { return age; } public void setAge(int age) { this.age = age; }
public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}Importante: Para o funcionamento correto das bibliotecas, a classe deve ter:
- Um construtor vazio (sem argumentos).
- Getters e Setters para todos os campos (obrigatório para Jackson; para Gson, apenas getters são suficientes).
Serialização de um objeto Java para JSON
Serialização é o processo de transformar um objeto em uma string. Vamos analisar ambas as abordagens.
Exemplo com Jackson
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); User user = new User("Ana", 25, "ana@exemplo.com");
// Serialização para string String json = mapper.writeValueAsString(user); System.out.println(json); }}Resultado da execução:
{"name":"Ana","age":25,"email":"ana@exemplo.com"}Exemplo com Gson
import com.google.gson.Gson;
public class GsonExample { public static void main(String[] args) { Gson gson = new Gson(); User user = new User("Ana", 25, "ana@exemplo.com");
// Serialização para string String json = gson.toJson(user); System.out.println(json); }}O resultado será idêntico. Ambas as bibliotecas lidam com a tarefa igualmente bem