Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio 1 e 2

#region Desafio Hora da Pratica 2 Consumindo API
using Teste4_Alura.ConsumindoAPI;

//1-

NovoUsuario novousuario = new NovoUsuario("",0,"");
LeArquivosJson leArquivos  = new LeArquivosJson();  

List<NovoUsuario> novoUsuarios = new List<NovoUsuario>()
{
   new NovoUsuario("Mane",10,"mane@gmail.com"),
   new NovoUsuario("Pedro",18,"pedro@gmail.com"),
   new NovoUsuario("Paulo",23,"Paulo@gmail.com"),
   new NovoUsuario("Maria",24,"Maria@gmail.com"),

};

NovoUsuario.NovosUsuarios(novoUsuarios);


//2-

leArquivos.ExibirListaSalva();



#endregion
using System.Text.Json;
namespace Teste4_Alura.ConsumindoAPI;

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

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

    public static void NovosUsuarios(List<NovoUsuario> novoUsuarioCadastrado)
    {
        string json = JsonSerializer.Serialize(novoUsuarioCadastrado);
        string listaUsuariosNovos = "novoUsuarioCadastrado.json";

        File.WriteAllText(listaUsuariosNovos, json);

        var novoUso = novoUsuarioCadastrado.OrderBy(noUso => noUso.Nome);

        foreach (var n in novoUso)
        {
            Console.WriteLine($"{n.Nome} - {n.Idade} - {n.Email}");
        }

        Console.WriteLine("\nArquivo json criado com sucesso");
        Console.WriteLine(Path.GetFullPath(listaUsuariosNovos));


    }



}


using System.Text.Json.Serialization;
namespace Teste4_Alura.ConsumindoAPI;
using System;
using System.IO;
using System.Text.Json;

internal class LeArquivosJson
{
    [JsonPropertyName("Nome")]
    public string? Nome { get; set; }

    [JsonPropertyName("Idade")]

    public int? Idade { get; set; }

    [JsonPropertyName("Email")]

    public string? Email { get; set; }

    public void ExibirListaSalva()
    {
        string fileName = "novoUsuarioCadastrado.json";

        if (!File.Exists(fileName))
        {
            Console.WriteLine($"\nO arquivo {fileName} não existe.");
            return;

        }

        string jsonString = File.ReadAllText(fileName);

        List<NovoUsuario>? usuarios = JsonSerializer.Deserialize<List<NovoUsuario>>(jsonString);

        if (usuarios == null || usuarios.Count == 0)
        {
            Console.WriteLine("Lista vazia ou inválida.");
            return;
        }
        Console.WriteLine();
        foreach (var u in usuarios)
        {
            Console.WriteLine($"{u.Nome} - {u.Idade} - {u.Email}");
        }
    }



}

 


2 respostas
solução!

Olá, Ulysses! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da serialização com System.Text.Json para salvar os dados em arquivo, utilizou muito bem listas para organizar os objetos NovoUsuario e ainda compreendeu a importância de validar a existência do arquivo antes de realizar a leitura.

Uma sugestão para o futuro seria aplicar o uso de async await com métodos assíncronos de leitura e escrita, deixando o código mais performático em cenários com grande volume de dados. Assim:

public static async Task NovosUsuariosAsync(List<NovoUsuario> novoUsuarioCadastrado)
{
    string json = JsonSerializer.Serialize(novoUsuarioCadastrado);
    string listaUsuariosNovos = "novoUsuarioCadastrado.json";

    await File.WriteAllTextAsync(listaUsuariosNovos, json);

    var novoUso = novoUsuarioCadastrado.OrderBy(noUso => noUso.Nome);

    foreach (var n in novoUso)
    {
        Console.WriteLine($"{n.Nome} - {n.Idade} - {n.Email}");
    }

    Console.WriteLine("\nArquivo json criado com sucesso");
    Console.WriteLine(Path.GetFullPath(listaUsuariosNovos));
}

Isso faz com que operações de I/O não bloqueiem a execução principal, melhorando a experiência em aplicações maiores.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

async await Exato processo esqueci T,T