Dela via


Hantera saknade medlemmar under deserialisering

Om JSON-nyttolasten som du deserialiserar innehåller egenskaper som inte finns i poco-typen (deserialized plain old CLR object) ignoreras de som standard. Från och med .NET 8 kan du ange att alla medlemmar måste finnas i nyttolasten. Om de inte är det utlöses ett JsonException undantag. Du kan konfigurera det här beteendet på något av tre sätt:

  • Kommentera din POCO-typ med [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>] attributet och ange antingen till Skip eller Disallow saknade medlemmar.

    [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'.
    
  • Ange JsonSerializerOptions.UnmappedMemberHandling till antingen Skip eller Disallow.

  • JsonTypeInfo Anpassa kontraktet för relevant typ. (Information om hur du anpassar ett kontrakt finns i Anpassa ett JSON-kontrakt.)