2
respostas

[Projeto] Livros

Exercício 1: Conversão Simples de JSON para Record

  1. 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.
}
  1. 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

  1. Mantenha a classe Pessoa (usando Record) do Exercício 1.

  2. 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

  1. 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) {
}
  1. 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.
}
  1. 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());
}
}
2 respostas

Para rodar esses exemplos:

Certifique-se de ter o JDK instalado. Baixe o arquivo JAR da biblioteca Gson e adicione-o ao seu classpath. Compile cada arquivo .java separadamente ou use um IDE (como IntelliJ IDEA, Eclipse ou VS Code com extensões Java) que gerencia automaticamente o classpath. Exemplo de compilação e execução via linha de comando (assumindo que gson-2.10.1.jar está na pasta lib):

Bash

Compilar Exercicio1

javac -cp ".;lib/gson-2.10.1.jar" Pessoa.java Exercicio1.java

Executar Exercicio1

java -cp ".;lib/gson-2.10.1.jar" Exercicio1

Compilar Exercicio2

javac -cp ".;lib/gson-2.10.1.jar" Pessoa.java Exercicio2.java

Executar Exercicio2

java -cp ".;lib/gson-2.10.1.jar" Exercicio2

Compilar Exercicio3

javac -cp ".;lib/gson-2.10.1.jar" Editora.java Livro.java Exercicio3.java

Executar Exercicio3

java -cp ".;lib/gson-2.10.1.jar" Exercicio3

Oi, Daiane! Como vai?

Você organizou muito bem os exercícios de conversão JSON para Record em Java, usando a biblioteca Gson para diferentes cenários — desde o básico até o JSON aninhado. Esse cuidado em mostrar casos com campos ausentes e adicionais é ótimo para entender a flexibilidade do Gson no mapeamento dos dados.

Uma dica interessante para o futuro é usar o método toJson() do Gson para converter objetos Java de volta para JSON, facilitando a serialização. Veja este exemplo:


Pessoa pessoa = new Pessoa("Carlos", 40, "Curitiba");
Gson gson = new Gson();
String json = gson.toJson(pessoa);
System.out.println(json);

Esse código transforma o objeto pessoa em uma string JSON. É útil para enviar dados a APIs ou salvar em arquivos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!