Processamento JSON em Java: revisão de bibliotecas e ferramentas
JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web modernas, REST APIs, arquivos de configuração e bancos de dados. Em Java, existem várias bibliotecas poderosas para trabalhar com JSON, cada uma com suas próprias características, desempenho e facilidade de uso. Neste artigo, vamos explorar as principais ferramentas, suas capacidades, exemplos de código e melhores práticas de aplicação.
1. Jackson (FasterXML Jackson)
Jackson é a biblioteca mais popular e de alto desempenho para trabalhar com JSON em Java. Ela suporta tanto processamento em streaming (estilo SAX) quanto modelo de objeto (estilo DOM). Jackson faz parte do Spring Boot e de muitas aplicações enterprise.
Principais capacidades:
- Serialização/desserialização de objetos Java para JSON e vice-versa
- Processamento em streaming de grandes arquivos JSON (JsonParser, JsonGenerator)
- Suporte a anotações para ajuste fino (@JsonProperty, @JsonIgnore, @JsonFormat)
- Trabalho com árvore de nós (JsonNode)
- Suporte a JSON Schema e validação
Exemplo de código: uso básico do Jackson
import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.JsonNode;
public class JacksonExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper();
// Serialização de objeto para JSON Person person = new Person("Ivan", 30, "ivan@example.com"); String json = mapper.writeValueAsString(person); System.out.println(json); // {"name":"Ivan","age":30,"email":"ivan@example.com"}
// Desserialização de JSON para objeto String jsonInput = "{\\"name\\":\\"Maria\\",\\"age\\":25}"; Person deserialized = mapper.readValue(jsonInput, Person.class); System.out.println(deserialized.getName()); // Maria
// Trabalho com árvore de nós JsonNode root = mapper.readTree(jsonInput); System.out.println(root.get("age").asInt()); // 25 }}
class Person { private String name; private int age; private String email;
// Construtores, getters, setters (obrigatórios para desserialização) public Person() {} public Person(String name, int age, String email) { this.name = name; this.age = age; this.email = email; } // getters e setters...}2. Gson (Google Gson)
Gson é uma biblioteca do Google, conhecida por sua simplicidade e leveza. Ela é ideal para projetos pequenos e médios, onde não é necessário o máximo desempenho. Gson usa reflexão para serialização/desserialização automática.
Características:
- Configuração mínima — funciona "pronto para uso"
- Suporte a anotações (@Expose, @SerializedName)
- Possibilidade de criar adaptadores personalizados (JsonSerializer, JsonDeserializer)
- Trabalho com coleções, arrays e objetos aninhados
Exemplo de código: Gson em ação
import com.google.gson.Gson;import com.google.gson.GsonBuilder;
public class GsonExample { public static void main(String[] args) { Gson gson = new GsonBuilder() .setPrettyPrinting() // saída formatada .create();
// Criação de JSON a partir de objeto Product product = new Product("Notebook", 899.99, true); String json = gson.toJson(product); System.out.println(json);
// Parsing de JSON para objeto String jsonInput = "{\\"name\\":\\"Mouse\\",\\"price\\":25.5,\\"available\\":false}"; Product parsed = gson.fromJson(jsonInput, Product.class); System.out.println(parsed.getName()); // Mouse }}
class Product {