Start Debugging
2023-09-02 Atualizado 2023-11-05 dotnetdotnet-8 Edit on GitHub

.NET 8 lidando com membros não mapeados na desserialização JSON

Aprenda a lançar exceções para propriedades JSON não mapeadas durante a desserialização no .NET 8 usando JsonUnmappedMemberHandling.

Por padrão, se houver propriedades adicionais no payload JSON que você está tentando desserializar, elas são simplesmente ignoradas. Mas e se você quisesse que a desserialização falhasse e lançasse uma exceção quando o JSON tiver propriedades extras? Isso é possível a partir do .NET 8.

Existem algumas formas de habilitar esse comportamento ao usar o serializador System.Text.Json.

1. Usando o atributo JsonUnmappedMemberHandling

Você pode anotar seu tipo com [System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute], passando a opção como parâmetro.

[JsonUnmappedMemberHandling(JsonUnmappedMemberHandling.Disallow)]
public class Foo
{
     public int Bar { get; set; }
}

2. Usando JsonSerializerOptions

Defina a propriedade JsonSerializerOptions.UnmappedMemberHandling como Disallow e passe esse options para o método Deserialize.

new JsonSerializerOptions 
{ 
    UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow 
};

Uma exceção é lançada

Esteja preparado para tratá-la. Com JsonUnmappedMemberHandling em Disallow, a seguinte exceção será lançada ao desserializar um payload JSON com membros adicionais.

System.Text.Json.JsonException: ‘The JSON property '' could not be mapped to any .NET member contained in type ’+’.’

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar