Introdução ao trabalho com JSON em Java
JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web modernas, APIs e microsserviços. Apesar do nome, o JSON não está vinculado ao JavaScript e é perfeitamente suportado em Java. Neste artigo, vamos detalhar como realizar parsing, serialização e desserialização de JSON em Java usando as bibliotecas populares: Jackson e Gson.
A capacidade de trabalhar com JSON é uma habilidade obrigatória para um desenvolvedor Java. Seja para ler arquivos de configuração, interagir com REST APIs ou transmitir dados entre microsserviços — o JSON está presente em todos os lugares. Abordaremos ambas as abordagens para que você possa escolher a mais adequada para o seu projeto.
Principais bibliotecas para trabalhar com JSON em Java
No ecossistema Java, existem várias bibliotecas populares para trabalhar com JSON. Duas delas são o padrão de facto:
- Jackson — a biblioteca mais popular, que faz parte do Spring Boot. Destaca-se pelo alto desempenho e amplas possibilidades de configuração.
- Gson — biblioteca do Google, simples de usar e leve. Ideal para projetos pequenos.
Ambas as bibliotecas suportam o ciclo completo de trabalho com JSON: serialização (objeto → JSON), desserialização (JSON → objeto) e processamento em fluxo.
Adicionando dependências
Para trabalhar com as bibliotecas, é necessário adicioná-las ao projeto. Se você usa Maven, adicione as seguintes dependências no pom.xml:
<!-- Jackson --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version></dependency>
<!-- Gson --><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version></dependency>Para Gradle, adicione as linhas no build.gradle:
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'implementation 'com.google.code.gson:gson:2.10.1'Serialização de objetos Java para JSON
Serialização é o processo de converter um objeto Java em uma string JSON. Vamos analisar ambas as abordagens.
Serialização com Jackson
Jackson usa a classe ObjectMapper para serialização. Exemplo:
import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.core.JsonProcessingException;
public class JacksonSerialization { public static void main(String[] args) throws JsonProcessingException { // Criando o objeto para serialização User user = new User("Ivan", "ivan@example.com", 25); // Criando ObjectMapper ObjectMapper mapper = new ObjectMapper(); // Serializando para JSON String json = mapper.writeValueAsString(user); System.out.println(json); // Saída: {"name":"Ivan","email":"ivan@example.com","age":25} }}
class User { private String name; private String email; private int age; // Construtor, getters e setters public User(String name, String email, int age) { this.name = name; this.email = email; this.age = age; } public String getName() { return name; } public String getEmail() { return email; } public int getAge() { return age; }}Serialização com Gson
Gson usa a classe Gson com o método toJson():
import com.google.gson.Gson;
public class GsonSerialization { public static void main(String[] args) { User user = new User("Maria", "maria@example.com", 30); Gson gson = n