.NET 8 manejar miembros no esperados al deserializar JSON
Aprende a lanzar excepciones por propiedades JSON sin mapear durante la deserialización en .NET 8 usando JsonUnmappedMemberHandling.
Por defecto, si en un payload JSON que intentas deserializar hay propiedades adicionales, simplemente se ignoran. Pero, ¿y si quisieras que la deserialización fallase y lanzase una excepción cuando hay propiedades extra en el JSON? Eso es posible a partir de .NET 8.
Hay varias formas de optar por este comportamiento cuando usas el serializador System.Text.Json.
1. Usando el atributo JsonUnmappedMemberHandling
Puedes anotar tu tipo con [System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute], pasando tu opción como parámetro.
[JsonUnmappedMemberHandling(JsonUnmappedMemberHandling.Disallow)]
public class Foo
{
public int Bar { get; set; }
}
2. Usando JsonSerializerOptions
Puedes establecer la propiedad JsonSerializerOptions.UnmappedMemberHandling a Disallow y pasarla al método Deserialize.
new JsonSerializerOptions
{
UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow
};
Se lanza una excepción
Prepárate para atraparla. Con JsonUnmappedMemberHandling puesto a Disallow, se lanzará la siguiente excepción al deserializar un payload JSON con miembros adicionales.
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.