在反序列化过程中处理缺失的成员
默认情况下,如果反序列化的 JSON 负载包含反序列化的普通旧 CLR 对象 (POCO) 类型中不存在的属性,则只会忽略这些属性。 从 .NET 8 开始,可以指定所有成员都必须存在于负载中。 否则,将引发 JsonException 异常。 可以通过以下三种方式之一配置此行为:
使用 JsonUnmappedMemberHandlingAttribute 属性对 POCO 类型进行批注,同时指定 Skip 或 Disallow 缺少的成员。
[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 设置为 Skip 或 Disallow。
自定义相关类型的 JsonTypeInfo 协定。 (有关自定义协定的信息,请参阅自定义 JSON 协定。)