Cyber Monday

ATÉ 40% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

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

[Dúvida] Alternativa de estrutura para gravação de Json

Olá Colegas e Instrutores,

Gostaria de saber se existe algum outro problema em utilizar a estrutura abaixo além da legibilidade.

JsonSerializer.Serialize(new FileStream (Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "artistas.json"), FileMode.Create, FileAccess.Write), artistas, new JsonSerializerOptions { WriteIndented = true });

Uma vez que uma das sobrecargas do método Serialize do objeto JsonSerializer já permite passarmos o Stream, o Path, a String e a Option, penso que para utilização única não teriamos mais problemas.

Além da legibilidade, o problema que vejo que poderia acontecer seria a criação repetida de objetos JsonSerializerOptions e FileStream caso fosse necessário repetir este código em um laço de repetição.

1 resposta
solução!

Olá Pedro! Como vai?

A estrutura que você está utilizando para serializar um objeto em JSON é funcional, mas como você mesmo mencionou, a legibilidade pode ser um ponto de atenção. Além disso, a criação repetida de objetos como JsonSerializerOptions e FileStream pode impactar a performance se o código for executado em um loop ou várias vezes.

Uma alternativa para melhorar a legibilidade e evitar a criação repetida desses objetos é separar a criação do FileStream e das opções de serialização em variáveis distintas antes de chamar o método Serialize. Isso também pode facilitar a reutilização do código. Aqui está um exemplo de como você poderia fazer isso:

// Definindo o caminho do arquivo
var caminhoArquivo = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "artistas.json");

// Criando as opções de serialização
var options = new JsonSerializerOptions { WriteIndented = true };

// Usando o bloco 'using' para garantir que o FileStream seja fechado corretamente
using (var arquivoJson = new FileStream(caminhoArquivo, FileMode.Create, FileAccess.Write))
{
    // Serializando o objeto 'artistas' no arquivo JSON
    JsonSerializer.Serialize(arquivoJson, artistas, options);
}

Dessa forma, o código fica mais organizado e você evita a recriação desnecessária dos objetos JsonSerializerOptions e FileStream. Além disso, ao utilizar o bloco using, você garante que o FileStream seja fechado corretamente após o uso, o que é uma boa prática para liberar recursos do sistema.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.