Olá, Eduardo. Como vai?
Seu código está muito bem escrito e segue as boas práticas de encapsulamento em C#, utilizando propriedades com private set e um construtor para inicializar o objeto. A implementação da serialização com JsonSerializer e a escrita no arquivo com File.WriteAllText estão corretas e diretas ao ponto.
Notei apenas um detalhe importante: para que o código funcione corretamente, é necessário garantir que o namespace System.Text.Json esteja importado, e uma boa prática ao lidar com entrada de usuário é tratar possíveis erros na conversão da idade. Se o usuário digitar uma letra em vez de um número, o int.Parse lançará uma exceção.
Aqui estão algumas sugestões para deixar seu desafio ainda mais completo:
- Adicione o
using System.Text.Json; no topo do arquivo. - Utilize o
int.TryParse para evitar que o programa feche caso a idade seja digitada incorretamente. - Considere o uso de
JsonSerializerOptions para deixar o arquivo JSON formatado (identado), facilitando a leitura humana.
Veja como o trecho final poderia ser ajustado:
using System.Text.Json;
// ... sua classe Pessoa aqui ...
Console.Write("Digite o nome: ");
string nome = Console.ReadLine()!;
Console.Write("Digite a idade: ");
if (!int.TryParse(Console.ReadLine(), out int idade))
{
Console.WriteLine("Idade inválida. Usando valor padrão 0.");
idade = 0;
}
Console.Write("Digite o e-mail: ");
string email = Console.ReadLine()!;
Pessoa pessoa = new Pessoa(nome, idade, email);
// Opção para deixar o JSON "bonito" (identado)
var options = new JsonSerializerOptions { WriteIndented = true };
string jsonString = JsonSerializer.Serialize(pessoa, options);
string fileName = "pessoa.json";
File.WriteAllText(fileName, jsonString);
Console.WriteLine($"Os dados foram salvos em {Path.GetFullPath(fileName)}");
Utilizar o Path.GetFullPath(fileName) no final é uma dica legal para mostrar ao usuário exatamente em qual pasta do computador o arquivo foi criado.
Espero que possa ter lhe ajudado!