Freigeben über


Behandeln fehlender Member während der Deserialisierung

Wenn die JSON-Nutzlast, die Sie deserialisieren, Eigenschaften enthält, die im deserialisierten POCO-Typ (Deserialized Plain Old CLR Object) nicht vorhanden sind, werden diese standardmäßig ignoriert. Ab .NET 8 können Sie angeben, dass alle Member in der Nutzlast vorhanden sein müssen. Wenn dies nicht der Fall ist, wird eine JsonException-Ausnahme ausgelöst. Sie können dieses Verhalten auf eine von drei Arten konfigurieren:

  • Kommentieren Sie Ihren POCO-Typ mit dem JsonUnmappedMemberHandlingAttribute-Attribut, und geben Sie an, dass fehlender Member entweder mit Skip oder mit Disallow behandelt werden.

    [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'.
    
  • Legen Sie JsonSerializerOptions.UnmappedMemberHandling entweder auf Skip oder Disallow fest.

  • Passen Sie den JsonTypeInfo-Vertrag für den relevanten Typ an. (Informationen zum Anpassen eines Vertrags finden Sie unter Anpassen eines JSON-Vertrags.)