集合属性上的 JsonNumberHandlingAttribute
.NET 6 中引入了与 JsonNumberHandlingAttribute 特性有关的一个小中断性变更。 如果将该特性应用于非数字值集合的属性,并尝试序列化或反序列化该属性,则会引发 InvalidOperationException。 该特性仅对数字类型集合的属性有效,例如:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }
旧行为
尽管在序列化过程中忽略了 JsonNumberHandlingAttribute,但它可应用于非数字类型集合的属性。 例如:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }
新行为
从 .NET 6 开始,如果将 JsonNumberHandlingAttribute 应用于非数字值集合的属性,并尝试序列化或反序列化该属性,则会引发 InvalidOperationException。
引入的版本
.NET 6
中断性变更的类型
此项更改可能会影响二进制兼容性。
更改原因
此项更改是数字处理功能的性能优化的副作用。
建议的操作
从不兼容的集合属性中删除 JsonNumberHandlingAttribute 特性。
受影响的 API
所有 System.Text.Json.JsonSerializer 序列化和反序列化方法。