.NET

22 mar, 2024

Novidades do .NET 9: melhorias na serialização JSON com IndentCharacter e IndentSize

Publicidade

Em um artigo anterior já apresentei uma das novidades previstas para o .NET 9 e que está relacionada à serialização de dados no formato JSON.

Neste novo artigo retomo esse tema, abordando agora o uso das novas propriedades IndentCharacter e IndentSize: estas são novas opções para definir o formato empregado na serialização a partir do tipo JsonSerializerOptions (namespace System.Text.Json).

.NET 9

Tomando como base a classe Localidade:

namespace ConsoleAppIndentationOptions.Models;

public class Localidade
{
public int Id { get; set; }
public string? NomeContinente { get; set; }
public string? NomePais { get; set; }
public string? NomeCidade { get; set; }
}

Instância

Ao criar uma instância de JsonSerializerOptions podemos informar:

  • O caracter empregado para indentação na propriedade IndentCharacter, que será espaço ou Tab (‘/t’);
  • Quantas vezes tal caracter deverá ser empregado em indentações, através da utilização da propriedade IndentSize.

É o que demonstra a listagem seguinte:

using ConsoleAppIndentationOptions.Models;
using System.Runtime.InteropServices;
using System.Text.Json;


Console.WriteLine("***** Testes com .NET 9 | Indentation options *****");
Console.WriteLine($"Versao do .NET em uso: {RuntimeInformation
    .FrameworkDescription} - Ambiente: {Environment.MachineName} - Kernel: {Environment
    .OSVersion.VersionString}");

var localidades = new Localidade[]
{
    new () { Id = 1, NomeCidade = "Sao Paulo", NomePais = "Brasil", NomeContinente = "America do Sul" },
    new () { Id = 2, NomeCidade = "Roma", NomePais = "Italia", NomeContinente = "Europa" }
};

var options = new JsonSerializerOptions
{
    WriteIndented = true,
    IndentCharacter = '\t',
    IndentSize = 1
};

Console.WriteLine();
Console.WriteLine("*** Resultados da serializacao ***");
foreach (var localidade in localidades)
{
    Console.WriteLine();
    Console.WriteLine(JsonSerializer.Serialize(localidade, options));
}

Executar

Ao executar essa aplicação por meio do Visual Studio 2022 teremos como resultado:

Esse exemplo está disponível no GitHub:

https://github.com/renatogroffe/DotNet9-ConsoleApp-IndentationOptions

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

LEIA TAMBÉM: Novidades do .NET 9: melhorias em criptografia com CryptographicOperations.HashData()