集合属性上的 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 序列化和反序列化方法。