Trabalhando com JSON em Java: Parsing e Serialização
JSON (JavaScript Object Notation) é um formato leve de intercâmbio de dados amplamente utilizado em aplicações web modernas, APIs e microsserviços. Em Java, trabalhar com JSON tornou-se uma parte essencial do desenvolvimento, seja para analisar respostas de servidores, serializar objetos para armazenamento ou transferir dados entre componentes do sistema. Neste artigo, examinaremos detalhadamente como realizar parsing e serialização de JSON em Java usando duas bibliotecas populares: Gson do Google e Jackson.
1. O que é JSON e por que é necessário em Java?
JSON é um formato de texto baseado em pares chave-valor e listas ordenadas. É facilmente legível tanto por humanos quanto por máquinas, tornando-o ideal para transferir dados entre um servidor e um cliente. Em Java, JSON é usado para:
- Troca de dados via REST API (por exemplo, receber dados de um servidor ou enviar um formulário).
- Arquivos de configuração — muitos frameworks usam JSON para configuração de aplicações.
- Serialização de objetos — converter objetos Java em uma string JSON para salvar em um arquivo ou banco de dados.
- Desserialização — restaurar objetos Java a partir de uma string JSON.
Java não tinha suporte nativo a JSON até a versão 9 (quando o módulo java.json foi introduzido), então os desenvolvedores geralmente usam bibliotecas de terceiros como Gson e Jackson. Vamos analisar ambas.
2. Parsing JSON com Gson
Gson é uma biblioteca leve do Google que permite converter facilmente JSON para objetos Java e vice-versa. É simples de usar e não requer anotações adicionais para cenários básicos.
2.1. Instalando o Gson
Adicione a dependência ao seu pom.xml (Maven):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version></dependency>Se você estiver usando Gradle:
implementation 'com.google.code.gson:gson:2.10.1'2.2. Parsing JSON para um objeto Java (Desserialização)
Suponha que temos uma string JSON com informações do usuário:
{ "name": "Ivan Petrov", "age": 30, "email": "ivan@example.com"}Vamos criar uma classe User:
public class User { private String name; private int age; private String email;
// Getters e Setters (necessários para Gson) 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; }}Agora vamos analisar o JSON:
import com.google.gson.Gson;
public class Main { public static void main(String[] args) { String jsonString = "{\\"name\\":\\"Ivan Petrov\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}"; Gson gson = new Gson(); User user = gson.fromJson(jsonString, User.class); System.out.println("Nome: " + user.getName()); System.out.println("Idade: " + user.getAge()); }}Saída:
Nome: Ivan PetrovIdade: 302.3. Serializando um objeto Java para JSON
O processo inverso — converter um objeto para JSON:
User user = new User();user.setName("Maria Smirnova");user.setAge(25);user.setEmail("maria@example.com");
Gson gson = new Gson();String json = gson.toJson(user);System.out.println(json);Resultado:
{"name":"Maria S