Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio resolvido

package desafio.json;

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

    public String getTitulo() {
        return titulo;
    }

    public String getAutor() {
        return autor;
    }

    public Editora getEditora() {
        return editora;
    }

    @Override
    public String toString() {
        return "Livro{" +
                "titulo='" + titulo + '\'' +
                ", autor='" + autor + '\'' +
                ", editora=" + editora.getNome() +
                '}';
    }
}
package desafio.json;

public class Editora {
    private String nome;

    public Editora(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}
package desafio.json;

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

public class Principal {
    public static void main(String[] args) {
        String representacaoJson = """
                {
                    "nome": "Aldeny Jr",
                    "cidade": "Salvador",
                    "endereco": "Rua do Aldeny Jr",
                    "email": "aldenyjr.dev@gmail.com"                }
                """;

        Gson gson = new Gson();
        Pessoa pessoa = gson.fromJson(representacaoJson, Pessoa.class);
        System.out.println(pessoa);

        Gson gson2 = new GsonBuilder().setLenient().create();
        Pessoa pessoa2 = gson2.fromJson(representacaoJson, Pessoa.class);
        System.out.println("Objeto Flex: " + pessoa);

        String representacaoJsonLivro = """
                {
                    "titulo": "Estruturas de Dados",
                    "autor": "Thiago Leite e Carvalho",
                    "editora": {
                        "nome": "Casa do Código"
                    }
                }
                """;

        Livro livro = gson.fromJson(representacaoJsonLivro, Livro.class);
        System.out.println(livro);

    }
}

Resultado Esperado:

Pessoa[nome=Aldeny Jr, idade=0, cidade=Salvador]
Objeto Flex: Pessoa[nome=Aldeny Jr, idade=0, cidade=Salvador]
Livro{titulo='Estruturas de Dados', autor='Thiago Leite e Carvalho', editora=Casa do Código}
2 respostas

Olá, Aldeny! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para modelar objetos com Java, utilizou muito bem o recurso de bibliotecas externas como Gson para manipulação de JSON e ainda compreendeu a importância da sobrescrita do método toString para representar objetos de forma legível.

Uma dica interessante para o futuro é aplicar anotações como @SerializedName para mapear campos JSON com nomes diferentes dos atributos da classe. Assim:

import com.google.gson.annotations.SerializedName;

public class Pessoa {
    @SerializedName("nome")
    private String nome;

    @SerializedName("cidade")
    private String cidade;

    @SerializedName("idade")
    private int idade;

    @Override
    public String toString() {
        return "Pessoa[nome=" + nome + ", idade=" + idade + ", cidade=" + cidade + "]";
    }
}

Isso faz com que o mapeamento seja mais flexível e evite problemas quando os nomes dos atributos não coincidirem com os do JSON.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Olá Daniel, tudo bem por aqui.

Neste caso, apliquei a anotação @SerializedName() da biblioteca gson sobre as classes Livro e Editora.

Obrigado por responder com sua avaliação, tem sigo de bom proveito este forum do Alura.