Quando ele faz dentro do Serialize, nome = Nome, o "Nome" é da classe Musica, mas e o outro "nome" minusculo, de onde vem?
Quando ele faz dentro do Serialize, nome = Nome, o "Nome" é da classe Musica, mas e o outro "nome" minusculo, de onde vem?
Oii, Guilherme.
Quando vemos essa sintaxe pela primeira vez, pode parecer que o código está buscando essa variável nome (minúscula) de algum lugar escondido, mas não é isso que acontece.
O nome em minúsculo está sendo criado naquele exato momento.
Vou te explicar como funciona essa estrutura chamada Objeto Anônimo (new { ... }):
Quando fazemos new { nome = Nome }, estamos dizendo ao C# o seguinte:
nome): Quero criar uma propriedade nova com este apelido. Será o rótulo (a chave) no JSON final.Nome): Quero que o valor dessa nova propriedade venha da variável Nome que já existe na sua classe MusicasPreferidas.Pense nisso como uma "tradução" ou um "de/para" antes de gerar o arquivo:
Nome (da classe original).nome (do objeto novo).Por que fazer isso?
Fazemos isso por convenção. No C#, costumamos usar PascalCase (iniciando com maiúscula, como Nome) para propriedades. Já no formato JSON (que é o arquivo de texto final), é padrão usar camelCase (iniciando com minúscula, como nome).
Ao fazer essa troca manual no objeto anônimo, garantimos que o arquivo final fique assim:
{
"nome": "Emy",
"musicas": [ ... ]
}
Se passássemos o objeto direto sem criar essa estrutura anônima, o JSON sairia com a chave maiúscula ("Nome": "Emy").
Então: o nome minúsculo nasceu ali dentro das chaves, apenas para organizar como os dados serão escritos no arquivo.