No código do instrutor, ele atribui os valores às propriedades e depois usa o JsonSerializer() dentro do Program Main().
Só que eu, ao invés disso, quis copiar o que a gente fez no projeto principal, que é criar um método dentro da classe que automaticamente já faz a serialização.
Então a classe ficou assim:
internal class Pessoa
{
public string Nome { get; set; }
public int Idade { get; set; }
public string Email { get; set; }
public Pessoa(string nome, int idade, string email)
{
Nome = nome;
Idade = idade;
Email = email;
}
internal void ToJson()
{
string json = JsonSerializer.Serialize(new
{
nome = Nome, idade = Idade, email = Email
});
string fileName = $"Pessoa-Linda-{Nome}.json";
File.WriteAllText(fileName, json);
Console.WriteLine(Path.GetFullPath(fileName));
}
}
E no meu Program Main() eu escrevi:
Pessoa pessoa = new("Pedro", 18, "PedroFarias@gmail.com");
pessoa.ToJson();
E isso de fato gerou um arquivo .json, só que aí, quando eu fui pro exercício 2, eu deserializei esse arquivo e usei o Console.WriteLine($"Nome: {pessoa.Nome}");
pra imprimir as propriedades no terminal, só que as strings estavam vazias a idade estava como 0.
Quando eu refiz o exercício 1, só que dessa vez usando o JsonSerializer() no Program Main(), ao invés de chamar o método ToString() que eu tinha criado ( ou seja, fazendo exatamente igual o instrutor fez no código de resolução dele ), eu consegui imprimir as propriedades no exercício 2 sem problemas.
Mas então, por que no projeto original eu consigo serializar tanto o objeto anonimo quanto as propriedades, mas nesse exercício eu não consigo, e sou obrigado a serializar só as propriedades, e ainda fora da classe?