Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Problema Desafio Final

Boa noite.

Quando é para filtrar músicas com tom C#, meu filtro está ficando zerado. Olhando no Program.cs quando Deserializo o JSON, quando mostro a segunda musica, vem com o tom 0, sendo que olhando o JSON o tom é 6.

using ScreenSound_04.Modelos;
using System.Text.Json;
using ScreenSound_04.Filtros;

using (HttpClient cliente = new HttpClient())
{
    try
    {
        string resposta = await cliente.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
       // Console.WriteLine(resposta);
        var musicas = JsonSerializer.Deserialize<List<Musica>>(resposta);


        musicas[0].ExibirDetalhesDaMusica();
        musicas[1].ExibirDetalhesDaMusica();



        string nomeDoArquivo = $"musicas-favoritas-Storti.txt";
        using (StreamWriter arquivo = new StreamWriter(nomeDoArquivo))
        {
            arquivo.WriteLine($"Músicas favoritas do Storti\n");
            
                arquivo.WriteLine(resposta);
            
        }
        Console.WriteLine("txt gerado com sucesso!");



    }
    catch (Exception ex) 
    {
        Console.WriteLine($"Temos um problema: {ex.Message}");
    }
}

Console.Read();

No arquivo TXT , que salvo o JSON está tudo certo, mas na impressão de detalhes da musica, fica as 2 primeiras com o Key = 0

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

using System.Text.Json.Serialization;

namespace ScreenSound_04.Modelos;
internal class Musica
{
    private readonly string[] tonalidades = { "C", "C#", "D", "Eb", "E", "F", "F#", "G", "Ab", "A", "Bb", "B" };

    [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("Key")]
    public int Key { get; set; }
   /*
    public string Tonalidade {  
        get
        {
            return tonalidades[Tom];
        }
    }
   */





    public void ExibirDetalhesDaMusica()
    {
        Console.WriteLine($"Artista: {Artista}");
        Console.WriteLine($"Música: {Nome}");
        Console.WriteLine($"Duração em s: {Duracao/1000}");
        Console.WriteLine($"Gênero: {Genero}");
        Console.WriteLine($"Tom: {Key}");
        //Console.WriteLine($"Tonalidade: {Tonalidade}");
        Console.WriteLine("\n");
    }

}

Alguém poderia me ajudar?

1 resposta
solução!

Encontrei o problema.

O atributo Key da classe Musica.cs estava com a primeira letra maiuscula, mas no JSON é minúscula

Deixei da forma abaixo e deu certo

 [JsonPropertyName("key")]
    public int Tom { get; set; }