Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Desafio: Hora da prática - Atividade 4

Resolução:
Livro.cs

using System.Text.Json.Serialization;

namespace DesafiosCSharp03._02Desafio.Modelos
{
    internal class Livro
    {
        [JsonPropertyName("titulo")]
        public string? Titulo { get; set; }

        [JsonPropertyName("autor")]
        public string? Autor { get; set; }

        [JsonPropertyName("ano_publicacao")]
        public int? AnoPublicacao { get; set; }

        [JsonPropertyName("genero")]
        public string? Genero { get; set; }

        [JsonPropertyName("paginas")]
        public int? Paginas { get; set; }

        [JsonPropertyName("editora")]
        public string? Editora { get; set; }

        public string FichaLivros =>
            $"Título: {Titulo} - Autor: {Autor} - Ano de Publicação: {AnoPublicacao} - Gênero: {Genero} - Páginas: {Paginas} - Editora: {Editora}\n";
    }
}

Program.cs

Console.Clear();

using (HttpClient client = new HttpClient())
{
    string resposta = await client.GetStringAsync("https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Livros.json");
    try
    {
        var livros = JsonSerializer.Deserialize<List<Livro>>(resposta)!;
        foreach (var livro in livros)
        {
            Console.WriteLine(livro.FichaLivros);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Ocorreu um erro ao obter os dados: {ex.Message}");
    }
}
1 resposta

Oi, Christopher! Como vai?

Mandou bem na forma como estruturou a classe Livro utilizando os atributos JsonPropertyName, deixando o mapeamento do JSON organizado e fácil de entender. Também foi muito interessante o uso da propriedade FichaLivros para centralizar a exibição das informações, tornando o código mais limpo e reutilizável. Além disso, a utilização do HttpClient junto com a desserialização para uma List<Livro> demonstra um bom entendimento do conteúdo apresentado no curso.

Uma dica interessante para o futuro é utilizar o método OrderBy() do LINQ para ordenar os livros antes da exibição. Veja este exemplo:


var livrosOrdenados = livros.OrderBy(l => l.Titulo);

foreach (var livro in livrosOrdenados)
{
Console.WriteLine(livro.FichaLivros);
}

Esse código organiza os livros em ordem alfabética pelo título antes de exibi-los no console.

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