Share via


Control de los miembros que faltan durante la deserialización

De forma predeterminada, si la carga de JSON que va a deserializar contiene propiedades que no existen en el tipo de objeto CRL estándar (POCO) deserializado, simplemente se omiten. A partir de .NET 8, puede especificar que todos los miembros deben estar presentes en la carga. Si no lo están, se producirá una excepción JsonException. Puede configurar este comportamiento de tres maneras:

  • Anote su tipo POCO con el atributo [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>], especificando Skip o Disallow para los miembros que faltan.

    [JsonUnmappedMemberHandling(JsonUnmappedMemberHandling.Disallow)]
    public class MyPoco
    {
         public int Id { get; set; }
    }
    
    JsonSerializer.Deserialize<MyPoco>("""{"Id" : 42, "AnotherId" : -1 }"""); 
    // JsonException : The JSON property 'AnotherId' could not be mapped to any .NET member contained in type 'MyPoco'.
    
  • Establezca JsonSerializerOptions.UnmappedMemberHandling en Skip o Disallow.

  • Personalice el contrato JsonTypeInfopara el tipo pertinente. (Para obtener más información sobre cómo personalizar un contrato, consulte Personalización de un contrato JSON).