2
respostas

Resolução

Só não consegui fazer a segunda questão mesmo...

package desafios.desafio02;

public record Pessoa(String nome, int idade, String cidade) {

}
package desafios.desafio02;

public class Livro {

    private String titulo;
    private String autor;
    private Editora editora;

    public Livro(String titulo, String autor, Editora editora) {
        this.titulo = titulo;
        this.autor = autor;
        this.editora = editora;
    }

    @Override
    public String toString() {
        return "Título = " + titulo + " | Autor = " + autor + " | Editora = " + editora.getNome();
    }
}
package desafios.desafio02;

public class Editora {

    private String nome;

    public String getNome() {
        return nome;
    }
}
/**
 * 1. Crie uma classe Pessoa usando o conceito de Record em Java, com atributos como nome, idade e cidade.
 *    Em seguida, implemente um programa que utiliza a biblioteca Gson para converter um JSON
 *    representando uma pessoa em um objeto do tipo Pessoa.
 *
 * 3. Crie uma classe Livro que contenha atributos como título, autor e um objeto representando a editora. Em seguida,
 *    implemente um programa que utiliza a biblioteca Gson para converter um JSON aninhado representando um livro
 *    em um objeto do tipo Livro.
 */

package desafios.desafio02;

import com.google.gson.Gson;

public class Principal {
    public static void main(String[] args) {
        String json = """
          {
            "nome" : "Lucas",
            "idade" : 26,
            "cidade": "Rio de Janeiro"
          }
        """;

        Gson gson = new Gson();

        Pessoa pessoa = gson.fromJson(json, Pessoa.class);

        System.out.println(pessoa);

        System.out.println("---------------------------------------");

        String jsonLivro = """
          {
            "titulo" : "O Hobbit",
            "autor" : "J. R. R. Tolkien",
            "editora" : {
                "nome" : "HarperCollins"
            }
          }
        """;

        Livro livro = gson.fromJson(jsonLivro, Livro.class);

        System.out.println(livro);
    }
}

Beleza?

2 respostas

Oi, Lucas, tudo bem?

Parabéns pelo empenho nas atividades!. Dei uma olhada no seu código e a estrutura das classes Livro, Editora e o Record de Pessoa ficaram ótimos. Você aplicou corretamente a orientação a objetos e a biblioteca Gson nos exercícios 1 e 3.

Sobre a questão 2, não se preocupe! Ela é apenas um detalhe de configuração.

Recomendo verificar a opinião do instrutor:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

record Pessoa(String nome, int idade, String cidade) {}

public class ConversaoJsonParaObjetoFlexivel {

    public static void main(String[] args) {
        String jsonPessoa = "{\"nome\":\"Rodrigo\",\"cidade\":\"Brasília\"}";

        Gson gson = new GsonBuilder().setLenient().create();
        Pessoa pessoa = gson.fromJson(jsonPessoa, Pessoa.class);

        System.out.println("Objeto Pessoa: " + pessoa);
    }
}

Bons estudos!

Sucesso

Imagem da comunidade

Vi que o método setLenient() está obsoleto. Pelo o que entendi o Gson por padrão já ignora null, é isso? Fiquei meio confuso na questão 2.