Share via


處理還原序列化期間遺漏的成員

根據預設,如果您要還原序列化的 JSON 承載包含的屬性不存在於已還原序列化簡單的 CLR 物件 (POCO) 類型中,則這些屬性會遭到忽略。 從 .NET 8 開始,您可以指定所有成員都必須存在於承載中。 如果不存在,則會擲回 JsonException 例外狀況。 您可以使用下列三種方式的其中一種來設定此行為:

  • 使用 [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>] 屬性標註 POCO 類型,並指定 SkipDisallow 遺漏成員。

    [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'.
    
  • JsonSerializerOptions.UnmappedMemberHandling 設定為 SkipDisallow

  • 自訂相關類型的 JsonTypeInfo 合約。 (如需自訂合約的相關資訊,請參閱自訂 JSON 合約。)