Trabalhando com JSON em Java: parsing e serialização para iniciantes
\n\nJSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em desenvolvimento web, aplicativos móveis e microsserviços. Para um desenvolvedor Java, saber ler (fazer parsing) e criar (serializar) JSON é uma habilidade essencial. Neste artigo, vamos abordar os fundamentos do trabalho com JSON em Java, usando as duas bibliotecas mais populares: Jackson e Gson. O material é voltado para iniciantes, portanto, todos os exemplos serão o mais simples e claros possível.
\n\nO que é parsing e serialização de JSON?
\nAntes de ir para o código, vamos definir os conceitos:
\n- \n
- Serialização — é o processo de converter um objeto Java em uma string JSON. Por exemplo, você criou um objeto
Usere deseja enviá-lo para o servidor no formato JSON. \n - Parsing (desserialização) — é o processo inverso: converter uma string JSON de volta para um objeto Java. Por exemplo, você recebeu uma resposta de uma API e deseja trabalhar com os dados como um objeto comum. \n
Preparação do projeto: adicionando dependências
\nPara trabalhar com JSON, precisaremos de bibliotecas externas. Vamos considerar as duas opções mais populares.
\n\nOpção 1: Jackson (recomendado para iniciantes)
\nJackson é uma biblioteca poderosa e de alto desempenho. Se você usa Maven, adicione no pom.xml:
<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\nOpção 2: Gson (do Google)
\nGson é uma biblioteca leve e intuitiva. Dependência para Maven:
\n<dependency>\n <groupId>com.google.code.gson</groupId>\n <artifactId>gson</artifactId>\n <version>2.10.1</version>\n</dependency>\n\nAmbas as bibliotecas podem ser baixadas manualmente do Maven Central, se você não estiver usando um sistema de build.
\n\nExemplo de dados: classe User
\nPara todos os exemplos, usaremos uma classe simples User:
public class User {\n private String name;\n private int age;\n private String email;\n\n // Construtor vazio obrigatório para Jackson e Gson\n public User() {}\n\n public User(String name, int age, String email) {\n this.name = name;\n this.age = age;\n this.email = email;\n }\n\n // Getters e Setters (importantes para a serialização)\n public String getName() { return name; }\n public void setName(String name) { this.name = name; }\n\n public int getAge() { return age; }\n public void setAge(int age) { this.age = age; }\n\n public String getEmail() { return email; }\n public void setEmail(String email) { this.email = email; }\n}\n\nParsing de JSON (String → Objeto Java)
\nVamos ver como ler uma string JSON e transformá-la em um objeto User.
Com Jackson
\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JacksonParsingExample {\n public static void main(String[] args) throws Exception {\n String jsonString = "{ \\"name\\": \\"Ivan\\", \\"age\\": 30, \\"email\\": \\"ivan@example.com\\" }";\n\n ObjectMapper mapper = new ObjectMapper();\n User user = mapper.readValue(jsonString, User.class);\n\n System.out.println("Nome: " + user.getName());\n System.out.println("Idade: " + user.getAge());\n }\n}\n\nCom Gson
\nimport com.google.gson.Gson;\n\npublic class GsonParsingExample {\n public static void main(String[] args) {\n String jsonString = "{ \\"name\\": \\"Maria\\", \\"age\\": 25, \\"email\\": \\"maria@example.com\\" }";\n\n Gson gson = new Gson();\n User user = gson.fromJson(json