1
resposta

Dúvida Faça como eu fiz: refatorando uma função

No código apresentado na atividadade Faça como eu fiz: refatorando uma função do capitulo Linq e ordenação as propriedades podem ficar foram da convenção de letras maiusculas para que fiquem iguais as chaves dos valores do json da api?

class Personagem { public string name { get; set; } public List? aliases { get; set; }

public void ExibirApelidosDaPersonagem()
{
    Console.WriteLine($"Nome: {name}");
    Console.WriteLine("Apelidos:");
    foreach (string apelido in aliases)
    {
        Console.WriteLine($"- {apelido}");
    }
}

} name e aliases estão em letra minuscula, como lidar com este fator?

1 resposta

Olá, Matheus.

Tudo bem?

Entendo sua preocupação em relação às convenções de nomenclatura em C#. Realmente, a convenção padrão é usar letras maiúsculas no início de propriedades públicas. No entanto, ao trabalhar com APIs e deserialização de JSON, pode ser necessário que as propriedades da sua classe correspondam exatamente às chaves do JSON.

Neste caso, como as chaves do JSON estão em letras minúsculas (por exemplo, "name" e "aliases"), as propriedades da sua classe Personagem também precisam estar em letras minúsculas para que a deserialização funcione corretamente.

Mas não se preocupe! O C# oferece uma maneira de lidar com isso mantendo a convenção de nomenclatura. Você pode usar o atributo JsonProperty da biblioteca Newtonsoft.Json para mapear as chaves do JSON para as propriedades da sua classe. Aqui está um exemplo de como você pode fazer isso:

class Personagem
{
    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("aliases")]
    public List<string>? Aliases { get; set; }

    public void ExibirApelidosDaPersonagem()
    {
        Console.WriteLine($"Nome: {Name}");
        Console.WriteLine("Apelidos:");
        foreach (string apelido in Aliases)
        {
            Console.WriteLine($"- {apelido}");
        }
    }
}

Neste exemplo, as propriedades Name e Aliases estão em conformidade com a convenção de nomenclatura do C#, mas ainda assim serão mapeadas corretamente para as chaves "name" e "aliases" do JSON durante a deserialização, graças aos atributos JsonProperty.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software