2
respostas

[Sugestão] Correção da resposta "correta"

Favor corrigir a questão, a alternativa "C" aparece como correta, mas é incorreta, pois a propriedade está com a letra maiúscula, então deveria se usar o JsonPropertyName para conseguir passar o valor.

Resposta C: class Clima { public string Temperatura { get; set; } public string Condicao { get; set; } }

Texto da questão: { "temperatura": "25°C", "umidade": "60%", "condicao": "ensolarado" }

2 respostas

Olá, Richard!

Entendo a sua confusão, mas na verdade a alternativa "C" está correta. No C#, a deserialização do JSON é feita de forma case-insensitive, ou seja, o case não importa. Isso significa que "Temperatura" e "temperatura" são considerados iguais na deserialização. Portanto, não é necessário usar o JsonPropertyName nesse caso.

Aqui está um exemplo para ilustrar:

string json = @"{""temperatura"": ""25°C"", ""condicao"": ""ensolarado""}";

Clima clima = JsonSerializer.Deserialize<Clima>(json);

Console.WriteLine(clima.Temperatura);  // Saída: 25°C
Console.WriteLine(clima.Condicao);  // Saída: ensolarado

Neste exemplo, mesmo que a propriedade Temperatura esteja com a primeira letra maiúscula e no JSON esteja com a primeira letra minúscula, a deserialização é feita corretamente.

Espero ter ajudado e bons estudos!

Olá, Renan!

Então, eu tinha entendido exatamente dessa forma case-insensitive, porém ao chegar no final do curso é lançado um desafio em que temos que pegar a propriedade "key" dos objetos dessa base:

https://guilhermeonrails.github.io/api-csharp-songs/songs.json

O que acontece é que criei uma propriedade escrita como Key, só que no caso com a inicial maiúscula, levando em consideração o ensinado (case-insensitive) e aí simplesmente não funciona dessa forma, tanto que no próprio vídeo/aula que mostra uma das possíveis soluções o instrutor também coloca o "JsonPropertyName("key")", aqui o link da aula, segue o código e o link do meu repositório:

using System.Text.Json.Serialization;

namespace ScreenSound.Modelos;

internal class Musica
{
    private 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("year")]
    public string Ano { get; set; }
    [JsonPropertyName("key")]
    public int Key { get; set; }
    public string Tonalidade 
    { 
        get
        {
            return tonalidades[Key];
        }
    }

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

Só por isso abri o tópico.