Gérer les membres manquants pendant la désérialisation

Par défaut, si la charge utile JSON que vous désérialisez contient des propriétés qui n’existent pas dans le type d’objet CLR traditionnel (POCO), elles sont simplement ignorées. À compter de .NET 8, vous pouvez spécifier que tous les membres doivent être présents dans la charge utile. Si ce n’est pas le cas, une exception JsonException est levée. Vous pouvez configurer ce comportement de l’une des trois manières suivantes :

  • Annotez votre type POCO avec l’attribut [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>], en spécifiant qu’il faut Skip ou Disallow les membres manquants.

    [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'.
    
  • Définissez JsonSerializerOptions.UnmappedMemberHandling sur Skip ou Disallow.

  • Personnalisez le contrat JsonTypeInfo pour le type approprié. (Pour plus d’informations sur la personnalisation d’un contrat, consultez Personnaliser un contrat JSON.)