Parseamento de JSON em Java: do zero ao código funcional
\n\nVocê já olhou para uma resposta JSON de uma API e sentiu um leve pânico? "Como eu extraio o name daqui? E o que faço com este objeto aninhado?" — perguntas familiares, certo? Não se preocupe, você não está sozinho. O tópico "How to parse JSON in Java" é uma das consultas mais populares no Stack Overflow, e hoje vamos resolver esta questão de uma vez por todas.
JSON (JavaScript Object Notation) é o formato padrão para troca de dados. Praticamente todo serviço moderno — desde clima até cotações de ações — fornece dados em JSON. Saber parseá-lo corretamente é uma habilidade básica para um desenvolvedor Java. Não vamos ler especificações chatas. Em vez disso, vamos usar as três bibliotecas mais populares: Gson (Google), Jackson (FasterXML) e a clássica org.json. Você verá a diferença nas abordagens e poderá escolher sua ferramenta.
\n\nO que você ganhará após a leitura? Você conseguirá parsear qualquer JSON — desde uma string simples até uma estrutura aninhada complexa com arrays. Vamos lá!
\n\nPreparação: o que precisamos
\n\nPara os exemplos, usaremos um projeto Maven simples. Se você não usa Maven — sem problemas, basta baixar os arquivos JAR das bibliotecas manualmente. Aqui estão as dependências mínimas para o pom.xml:
<!-- Gson -->\n<dependency>\n <groupId>com.google.code.gson</groupId>\n <artifactId>gson</artifactId>\n <version>2.10.1</version>\n</dependency>\n\n<!-- Jackson -->\n<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\n<!-- org.json (simples) -->\n<dependency>\n <groupId>org.json</groupId>\n <artifactId>json</artifactId>\n <version>20231013</version>\n</dependency>\n\n\nAgora, imagine que recebemos do servidor o seguinte JSON (informações do usuário):
\n\n{\n "id": 42,\n "name": "Alice",\n "email": "alice@example.com",\n "isActive": true,\n "address": {\n "city": "Moscou",\n "street": "Tverskaya"\n },\n "hobbies": ["leitura", "programação", "bicicleta"]\n}\n\n\nNossa tarefa é transformar esta string em objetos Java e extrair os campos necessários. Vamos em ordem.
\n\nMétodo 1: Parseamento de JSON em Java com Gson (simples e elegante)
\n\nGson do Google é, provavelmente, a maneira mais simples de parsear JSON em Java. Sua principal vantagem é o minimalismo. Você não precisa escrever muito código.
\n\nPasso 1. Criamos uma classe Java (POJO) que corresponde à estrutura JSON.
\n\npublic class User {\n private int id;\n private String name;\n private String email;\n private boolean isActive;\n private Address address;\n private List<String> hobbies;\n\n // Getters e Setters (obrigatórios para o Gson!)\n public int getId() { return id; }\n public void setId(int id) { this.id = id; }\n\n public String getName() { return name; }\n public void setName(String name) { this.name = name; }\n\n // ... demais getters/setters de forma análoga\n}\n\npublic class Address {\n private String city;\n private String street;\n // getters/setters\n}\n\n\nPasso 2. Parseamos o JSON com uma única linha.
\n\nimport com.google.gson.Gson;\n\npublic class GsonExample {\n public static void main(String[] args) {\n String json = "{\\"id\\":42,\\"name\\":\\"Alice\\",\\"email\\":\\"alice@example.com\\",\\"isActive\\":true,\\"address\\":{\\"city\\":\\"Moscou\\",\\"street\\":\\"Tverskaya\\"},\\"hobbies\\":[\\"leitura\\",\\"programação\\",\\"bicicleta\\"]}";\n\n Gson gson = new Gson();\n User user = gson.fromJson(json, User.class);\n\n System.out.print