1
resposta

Desafio 02: Api, Biblioteca Gson

1. Fiz os dois processos já que não havia um json base, de serialização e desserialização:

Criei a Classe Record dessa forma:

package Apis;

public record Pessoa(String nome, int idade, String cidade) {
}
        Pessoa p1 = new Pessoa("Paulo", 19, "Santos");
        Pessoa p2 = new Pessoa("Cristiano Ronaldo", 40, "Riade");

        Gson gson = new Gson();

        //criando os json com os 2 objetos
        String json1 = gson.toJson(p1);
        String json2 = gson.toJson(p2);

        System.out.println(json1);
        System.out.println(json2);


        //transformar esse json com a desserialização
        Pessoa pessoa1 = gson.fromJson(json1, Pessoa.class);
        Pessoa pessoa2 = gson.fromJson(json2, Pessoa.class);

        System.out.println(pessoa1);
        System.out.println(pessoa2);

Saída 1 (json):

{"nome":"Paulo","idade":19,"cidade":"Santos"}
{"nome":"Cristiano Ronaldo","idade":40,"cidade":"Riade"}

Saída 2 (gson):

Pessoa[nome=Paulo, idade=19, cidade=Santos]
Pessoa[nome=Cristiano Ronaldo, idade=40, cidade=Riade]

2. Modifiquei o final do código sem alterar o record, crei dois json manualmente e vi que campos faltando aparecem como null e campo adicional não apareceram no gson final:

//json criado depois
String json3 = "{\"nome\": \"Messi\", \"idade\": 38}";
        String json4 = "{\"nome\": \"Davi Brito\", \"idade\": 28, \"cidade\": \"Rio de Janeiro\" ,\"profissao\": \"doutor\" }";

//        System.out.println(json1);
//        System.out.println(json2);
//        System.out.println(json3);
//        System.out.println(json4);

        //transformar esse json com a desserialização
        Pessoa pessoa1 = gson.fromJson(json1, Pessoa.class);
        Pessoa pessoa2 = gson.fromJson(json2, Pessoa.class);
        Pessoa pessoa3 = gson.fromJson(json3, Pessoa.class);
        Pessoa pessoa4 = gson.fromJson(json4, Pessoa.class);

        System.out.println(pessoa1);
        System.out.println(pessoa2);
        System.out.println(pessoa3);
        System.out.println(pessoa4);

Saída 1 (json):

{"nome":"Paulo","idade":19,"cidade":"Santos"}
{"nome":"Cristiano Ronaldo","idade":40,"cidade":"Riade"}
{"nome": "Messi", "idade": 38}
{"nome": "Davi Brito", "idade": 28, "cidade": "Rio de Janeiro" ,"profissao": "doutor" }

Saída 2 (gson):

Pessoa[nome=Paulo, idade=19, cidade=Santos]
Pessoa[nome=Cristiano Ronaldo, idade=40, cidade=Riade]
Pessoa[nome=Messi, idade=38, cidade=null]
Pessoa[nome=Davi Brito, idade=28, cidade=Rio de Janeiro]

3. Utilizar Gson com livro/editora:

Record Editora:

package Apis;
public record Editora(String nome) {
}

Record Livro:

package Apis;

public record Livro(String titulo, String autor, Editora editora) {
}

Main, criei o objeto livro com dados e sua editora, e dessa forma fiz o json e após isso transformei no gson:


        Livro l1 = new Livro("O Poder do Hábito", "Charles Duhigg", new Editora("Objetiva"));

        Gson gson = new Gson();
        //criando json
        String primeiroLivro = gson.toJson(l1);
        System.out.println(primeiroLivro);

        //json para gson
        Livro livroUm = gson.fromJson(primeiroLivro, Livro.class);
        System.out.println(livroUm);

Saída JSON/ GSON:

{"titulo":"O Poder do Hábito","autor":"Charles Duhigg","editora":{"nome":"Objetiva"}}

Livro[titulo=O Poder do Hábito, autor=Charles Duhigg, editora=Editora[nome=Objetiva]]
1 resposta

Oi, Paulo! Como vai?

Achei muito interessante como você explorou tanto a serialização quanto a desserialização, além de testar casos com campos ausentes e extras no JSON. Isso mostra que você está compreendendo bem como o Gson lida com diferentes estruturas de dados e como o uso de record facilita a leitura e organização.

Bons estudos!