1
resposta

[Projeto] Desafio: hora da prática 1

class Pessoa
{
    public Pessoa(string nome, int idade, string email)
    {
        Nome = nome;
        Idade = idade;
        Email = email;
    }

    public string Nome { get; private set; }
    public int Idade { get; private set; }
    public string Email { get; private set; }
}

Console.Write("Digite o nome: ");
string nome = Console.ReadLine()!;
Console.Write("Digite a idade: ");
int idade  = int.Parse(Console.ReadLine()!);
Console.Write("Digite o e-mail: ");
string email = Console.ReadLine()!;
Pessoa pessoa = new Pessoa(nome, idade, email);
string jsonString = JsonSerializer.Serialize(pessoa);

string fileName = "pessoa.json";

File.WriteAllText(fileName, jsonString);

Console.WriteLine($"Os dados foram salvos em {fileName}");
1 resposta

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!