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()