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.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по