Olá, Eduardo. Como vai?
Excelente continuação do desafio! Você implementou corretamente a lógica de desserialização, que é o processo inverso do que foi feito no exercício anterior. É fundamental utilizar o método File.Exists para evitar exceções de arquivo não encontrado (FileNotFoundException), e você fez isso de forma impecável.
Notei apenas um detalhe técnico importante: como a sua classe Pessoa possui um construtor com parâmetros e propriedades com private set, o JsonSerializer do .NET pode ter dificuldades para criar o objeto se não encontrar um construtor padrão ou se as propriedades não estiverem mapeadas corretamente durante a leitura do JSON.
Para garantir que a desserialização funcione perfeitamente com esse modelo de classe, você pode adicionar um atributo acima do seu construtor ou garantir que os nomes das propriedades no JSON coincidam com os parâmetros do construtor.
Aqui estão algumas sugestões para complementar seu código:
- Use o atributo
[JsonConstructor] caso tenha mais de um construtor, para indicar ao C# qual usar. - Adicione o tratamento de valores nulos caso o arquivo JSON esteja corrompido ou vazio.
- Certifique-se de que o namespace
using System.Text.Json; esteja declarado.
Veja como o trecho da desserialização pode ficar mais robusto:
if (File.Exists(fileName))
{
string jsonString = File.ReadAllText(fileName);
// O uso do ? indica que a variável pode ser nula caso o JSON seja inválido
Pessoa? pessoa = JsonSerializer.Deserialize<Pessoa>(jsonString);
if (pessoa != null)
{
Console.WriteLine("Dados carregados com sucesso:");
Console.WriteLine($"Nome: {pessoa.Nome}");
Console.WriteLine($"Idade: {pessoa.Idade}");
Console.WriteLine($"E-mail: {pessoa.Email}");
}
}
else
{
Console.WriteLine($"O arquivo {fileName} não existe.");
}
- O método JsonSerializer.Deserialize(jsonString) é a chave aqui: ele lê o texto e tenta mapear as chaves do arquivo para as propriedades da sua classe.
- Validar se o objeto pessoa não é nulo após a leitura evita o erro de referência nula (NullReferenceException) ao tentar acessar as propriedades.
Parabéns por completar o ciclo de escrita e leitura de arquivos!
Espero que possa ter lhe ajudado!