1
resposta

[Sugestão] Desafio hora prática 2 de APIs RESOLVIDO

Main.java:

package br.com.alura.desafio2;

import br.com.alura.desafio2.dto.LivroDTO;
import br.com.alura.desafio2.dto.PessoaDTO;
import br.com.alura.desafio2.model.Editora;
import br.com.alura.desafio2.model.Livro;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        String jsonPessoa = """
        {
            "nome": "Rômulo",
            "idade": 23,
            "cidade": "São Paulo"
        }
        """;
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();
        PessoaDTO pessoaDTO = gson.fromJson(jsonPessoa, PessoaDTO.class);
        System.out.println(pessoaDTO);

//---------------------------------------------------------------------------------
        String jsonLivro = """
        {
            "titulo": "Pet Sematary",
            "autor": "Stephen King",
            "editora": {
                "nome": "Casa da Palavra",
                "cidade": "São Paulo"
            }
        }        
        """;
        LivroDTO livroDTO = gson.fromJson(jsonLivro, LivroDTO.class);
        Livro livro = new Livro(
            livroDTO.titulo(),
            livroDTO.autor(),
            new Editora(livroDTO.editora().nome(), livroDTO.editora().cidade())
        );
        System.out.println(livro);
    }
}

PessoaDTO:

package br.com.alura.desafio2.dto;

public record PessoaDTO(
    String nome,
    int idade,
    String cidade
) {}

Livro:

package br.com.alura.desafio2.model;

public class Livro {
    private String nome;
    private String autor;
    private Editora editora;

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

    @Override
    public String toString() {
        return "Livro: %s | Autor: %s | Editora: %s".formatted(this.nome, this.autor, this.editora);
    }
}

Editora:

package br.com.alura.desafio2.model;

public class Editora {
    private String nome;
    private String cidade;

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

    @Override
    public String toString() {
        return this.nome;
    }
}

LivroDTO:

package br.com.alura.desafio2.dto;

public record LivroDTO(
    String titulo,
    String autor,
    EditoraDTO editora
) {}

EditoraDTO:

package br.com.alura.desafio2.dto;

public record EditoraDTO(
    String nome,
    String cidade
) {}
1 resposta

Olá, estudante, como vai?

Seu código atende bem à proposta do exercício. A utilização de record para representar os DTOs está correta e a conversão de JSON para objetos Java com a biblioteca Gson foi aplicada de forma adequada. A estrutura separando DTOs e classes de modelo também demonstra uma boa organização do projeto.

Obrigado por compartilhar sua solução no fórum e continue trazendo suas implementações para discussão. O fórum permanece à disposição.

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