Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: hora da prática - Atividade 03

Usuario.cs

using System.Text.Json.Serialization;

class Usuario {

    [JsonPropertyName("nome")]
    public string? Nome {get;set;}

    [JsonPropertyName("idade")]
    public int Idade {get;set;}

    [JsonPropertyName("email")]
    public string? Email {get;set;}

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

    public void ExibirInformacoes() {
        Console.WriteLine();
        Console.WriteLine($"Nome: {Nome}");
        Console.WriteLine($"Email: {Email}");
        Console.WriteLine($"Idade: {Idade}");
        Console.WriteLine();
    }
}

Program.cs

using System.Text.Json;

List<Usuario> listaUsuarios = new();

for (int i = 0; true; i++) {
    Console.Clear();
    Console.Write($"[{i+1}. Pessoa] Digite seu nome: ");
    string nomePessoa = Console.ReadLine()!;
    Console.Write($"[{i+1}. Pessoa] Digite seu email: ");
    string emailPessoa = Console.ReadLine()!;
    Console.Write($"[{i+1}. Pessoa] Digite sua idade: ");
    int idadePessoa; int.TryParse(Console.ReadLine()!, out idadePessoa);

    var usuario = new Usuario(nomePessoa, idadePessoa, emailPessoa);
    listaUsuarios.Add(usuario);

    Console.Write("Deseja digitar a próxima? [S] [N]: ");
    string resposta = Console.ReadLine()!;

    if (resposta.ToUpper() == "N") break;
}

try {
    var json = JsonSerializer.Serialize(new {
        listaUsuarios
    });

    string nomeArquivo = "infos";
    File.WriteAllText(nomeArquivo, json);
    Console.Clear();
    Console.WriteLine("Arquivo .json com as informações foi salvo com sucesso.");
}
catch (Exception ex) {
    Console.WriteLine($"Um erro foi encontrado: {ex.Message}");
}
1 resposta
solução!

Oi, Diego! Como vai?

Agradeço por compartilhar.

Gostei bastante da forma como você estruturou a classe Usuario com os atributos de serialização usando JsonPropertyName, isso mostra um bom entendimento de como controlar o JSON gerado. Também ficou bem organizado o fluxo de entrada de dados com o for e a decisão de continuar ou não, além do uso de try/catch, que é importante para lidar com possíveis falhas.

Você pode utilizar o método WriteIndented nas opções do JsonSerializer para gerar um JSON mais legível:


var opcoes = new JsonSerializerOptions
{
    WriteIndented = true
};

var json = JsonSerializer.Serialize(listaUsuarios, opcoes);
File.WriteAllText("infos.json", json);

Esse código gera um JSON formatado, facilitando a leitura e manutenção do arquivo.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!