Novidades do .NET 8: serialização de membros não-públicos

Renato Groffe
2 min readOct 6, 2023

--

Em um post anterior abordei a possibilidade de geração de erros durante a desserialização de strings JSON em objetos, uma das diversas melhorias envolvendo recursos que integram o namespace System.Text.Json:

.NET 8: primeiros testes + melhorias na desserialização JSON

Neste novo artigo retomo esse tema, demonstrando agora outra novidade: a capacidade de serializar membros não-públicos de um tipo e que estejam marcados com JsonIncludeAttribute (estrutura definida no namespace System.Text.Json.Serialization). Com isto um elemento marcado com modificadores de acesso como private, protected ou internal poderá também ser considerado em processos de serialização/desserialização.

Na listagem a seguir temos a definição da classe Coordenada3D, já empregando esta nova funcionalidade:

  • As propriedades X (modificador internal), Y (modificador protected) e Z (modificador private) foram marcadas com o atributo JsonInclude;
  • Foi necessário ainda que o construtor deste tipo (que utiliza o modificador internal) fosse marcado com o atributo JsonConstructor;
  • O método público Show exibe em console uma mensagem com os conteúdos associados a X, Y e Z.

E a próxima listagem traz exemplos de serialização (linhas 13 a 22) e desserialização (linhas 24 a 32) empregando instâncias de Coordenada3D:

O resultado da execução desta Console Application a partir do Visual Studio 2022 pode ser observado na imagem seguinte:

Clique nesta imagem para visualizar com uma melhor resolução

O código aqui apresentado está disponível no GitHub:

https://github.com/renatogroffe/DotNet8-ConsoleApp-SerializationNonPublic

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!

E finalizo este artigo com um convite…

Acompanhe neste novo evento ONLINE e GRATUITO no Canal .NET dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 7, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será abordado o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos ainda novidades do .NET 8 e C# 12 demonstradas através de exemplos práticos!

Quando: 16/10/2023 (segunda) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://www.meetup.com/dotnet-sao-paulo/events/295621042/

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker