Quando ele faz dentro do Serialize, nome = Nome, o "Nome" é da classe Musica, mas e o outro "nome" minusculo, de onde vem?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.