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());
}
}