Olá, Eduardo. Como vai?
Excelente evolução no desafio! Você subiu o nível do projeto ao implementar uma lista de objetos e uma estrutura de repetição while(true) com uma condição de parada clara. Essa é a base para criar sistemas que processam múltiplos registros de uma só vez, o que é muito comum no dia a dia do desenvolvimento.
O ponto principal aqui é que, ao serializar a List<Pessoa>, o seu arquivo JSON passará a ter uma estrutura de array (colchetes []), permitindo armazenar quantos usuários você desejar.
Para tornar seu código ainda mais profissional e evitar que ele pare de funcionar por erros de digitação, deixo algumas sugestões:
- Assim como nos tópicos anteriores, o uso do
int.TryParse é altamente recomendado para evitar que o programa quebre se o usuário digitar algo que não seja um número na idade. - Adicione o
using System.Text.Json; para garantir que o serializador seja reconhecido. - Como você está trabalhando com uma lista, pode ser interessante usar o
JsonSerializerOptions para deixar o arquivo gerado mais legível.
Veja como o trecho da lógica principal poderia ser refinado:
var pessoas = new List<Pessoa>();
while (true)
{
Console.Write("Digite o nome (ou 'sair' para encerrar): ");
string nome = Console.ReadLine()!;
if (nome.Trim().ToLower().Equals("sair"))
{
break;
}
Console.Write("Digite a idade: ");
if (!int.TryParse(Console.ReadLine(), out int idade))
{
Console.WriteLine("Idade inválida! Digite um número.");
continue; // Volta para o início do loop
}
Console.Write("Digite o e-mail: ");
string email = Console.ReadLine()!;
pessoas.Add(new Pessoa(nome, idade, email));
}
// Configuração para o JSON ficar organizado
var opcoes = new JsonSerializerOptions { WriteIndented = true };
string jsonString = JsonSerializer.Serialize(pessoas, opcoes);
string fileName = "pessoas.json";
File.WriteAllText(fileName, jsonString);
Console.WriteLine($"\nSucesso! {pessoas.Count} pessoas foram salvas em {fileName}");
- O uso do
nome.Trim().ToLower() na verificação do "sair" evita que espaços extras ou letras maiúsculas impeçam o encerramento do programa. - O
pessoas.Count no final dá um feedback bem legal para o usuário sobre quantos registros foram processados.
Parabéns por dominar a manipulação de listas e a persistência de dados em arquivos!
Espero que possa ter lhe ajudado!