Exercício 1: Conversão Simples de JSON para Record
- Crie a classe Pessoa (usando Record):
Java
// Pessoa.java
public record Pessoa(String nome, int idade, String cidade) {
// Records automaticamente geram construtor, getters, equals, hashCode e toString.
}
- Crie o programa principal para conversão:
Java
// Exercicio1.java
import com.google.gson.Gson;
public class Exercicio1 {
public static void main(String[] args) {
// JSON representando uma pessoa
String jsonPessoa = "{\"nome\": \"Maria Silva\", \"idade\": 30, \"cidade\": \"São Paulo\"}";
// Cria uma instância de Gson
Gson gson = new Gson();
// Converte o JSON em um objeto Pessoa
Pessoa pessoa = gson.fromJson(jsonPessoa, Pessoa.class);
// Imprime os dados da pessoa para verificar a conversão
System.out.println("Exercício 1: Conversão de JSON para Pessoa");
System.out.println("Nome: " + pessoa.nome());
System.out.println("Idade: " + pessoa.idade());
System.out.println("Cidade: " + pessoa.cidade());
}
}
Exercício 2: Flexibilizando a Conversão de JSON
Mantenha a classe Pessoa (usando Record) do Exercício 1.
Modifique o programa principal:
Java
// Exercicio2.java
import com.google.gson.Gson;
public class Exercicio2 {
public static void main(String[] args) {
// JSON com campo ausente (cidade)
String jsonPessoaCampoAusente = "{\"nome\": \"João Souza\", \"idade\": 25}";
// JSON com campo adicional (profissao)
String jsonPessoaCampoAdicional = "{\"nome\": \"Ana Paula\", \"idade\": 35, \"cidade\": \"Rio de Janeiro\", \"profissao\": \"Desenvolvedora\"}";
// Cria uma instância de Gson
Gson gson = new Gson();
System.out.println("Exercício 2: Flexibilizando a Conversão de JSON");
// --- Teste com campo ausente ---
Pessoa pessoaAusente = gson.fromJson(jsonPessoaCampoAusente, Pessoa.class);
System.out.println("\n--- JSON com campo 'cidade' ausente ---");
System.out.println("Nome: " + pessoaAusente.nome());
System.out.println("Idade: " + pessoaAusente.idade());
System.out.println("Cidade: " + pessoaAusente.cidade()); // Será null
// --- Teste com campo adicional ---
Pessoa pessoaAdicional = gson.fromJson(jsonPessoaCampoAdicional, Pessoa.class);
System.out.println("\n--- JSON com campo 'profissao' adicional ---");
System.out.println("Nome: " + pessoaAdicional.nome());
System.out.println("Idade: " + pessoaAdicional.idade());
System.out.println("Cidade: " + pessoaAdicional.cidade());
// O campo 'profissao' é simplesmente ignorado pelo Gson
}
}
Exercício 3: Conversão de JSON Aninhado
- Crie a classe Editora (pode ser um Record ou uma classe normal, para este exemplo, usaremos um Record):
Java
// Editora.java
public record Editora(String nome, String endereco) {
}
- Crie a classe Livro (usando Record):
Java
// Livro.java
public record Livro(String titulo, String autor, Editora editora) {
// O campo 'editora' é do tipo Editora, permitindo o aninhamento.
}
- Crie o programa principal para conversão:
Java
// Exercicio3.java
import com.google.gson.Gson;
public class Exercicio3 {
public static void main(String[] args) {
// JSON aninhado representando um livro com informações da editora
String jsonLivroAninhado = "{"
+ " \"titulo\": \"O Senhor dos Anéis\","
+ " \"autor\": \"J.R.R. Tolkien\","
+ " \"editora\": {"
+ " \"nome\": \"HarperCollins Brasil\","
+ " \"endereco\": \"São Paulo, SP\""
+ " }"
+ "}";
// Cria uma instância de Gson
Gson gson = new Gson();
// Converte o JSON aninhado em um objeto Livro
Livro livro = gson.fromJson(jsonLivroAninhado, Livro.class);
// Imprime os dados do livro e da editora para verificar a conversão
System.out.println("\nExercício 3: Conversão de JSON Aninhado para Livro");
System.out.println("Título: " + livro.titulo());
System.out.println("Autor: " + livro.autor());
System.out.println("Editora:");
System.out.println(" Nome da Editora: " + livro.editora().nome());
System.out.println(" Endereço da Editora: " + livro.editora().endereco());
}
}