默认情况下,如果要反序列化的 JSON 有效负载包含普通旧 CLR 对象(POCO)类型中不存在的属性,则它们将被忽略。 从 .NET 8 开始,可以指定 POCO 中必须存在所有有效负载属性。 如果不是这种情况,则会在反序列化过程中引发 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 协定。)