1
resposta

[Projeto] Faça como eu fiz: mais uma classe

internal class Musica
{
    [JsonPropertyName("song")]
    public string? Nome { get; set; }

    [JsonPropertyName("artist")]
    public string? Artista { get; set; }

    [JsonPropertyName("duration_ms")]
    public int Duracao { get; set; }

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

    [JsonPropertyName("year")]
    public string? AnoString { get; set; }

    public int Ano
    {
        get
        {
            return int.Parse(AnoString!);
        }
    }

    public void ExibirDetalhesDaMusica()
    {
        Console.WriteLine($"Artista: {Artista}");
        Console.WriteLine($"Música: {Nome}");
        Console.WriteLine($"Duracao em segundos: {Duracao / 1000}");
        Console.WriteLine($"Genero musical: {Genero}");
    }
}

public static void FiltrarMusicasPorAno(List<Musica> musicas, int ano)
    {
        var musicasDoAno = musicas.Where(m => m.Ano == ano).ToList();

        Console.WriteLine($"Músicas de {ano}");
        foreach(var musica in musicasDoAno)
        {
            Console.WriteLine($"- {musica.Nome}");
        }
    }
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

O seu código ficou bem organizado, com o uso correto de JsonPropertyName para mapear os dados da API e a criação da propriedade Ano para converter o valor recebido como texto. A função FiltrarMusicasPorAno também está bem aplicada com LINQ, usando o Where para buscar somente as músicas do ano informado.

Dica: para deixar o código mais seguro, você pode trocar o int.Parse(AnoString!) por int.TryParse, assim evita erro caso o campo year venha vazio ou em um formato inesperado. Continue praticando essa separação entre classe, propriedades e filtros, isso ajuda bastante na organização do projeto.

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