Udostępnij za pośrednictwem


JsonNumberHandlingAttribute we właściwościach kolekcji

W przypadku atrybutu wprowadzono niewielką zmianę powodującą JsonNumberHandlingAttribute niezgodność na platformie .NET 6. Jeśli zastosujesz atrybut do właściwości, która jest kolekcją wartości innych niż liczba i spróbujesz serializować lub deserializować właściwość, InvalidOperationException zostanie zgłoszony element . Atrybut jest prawidłowy tylko dla właściwości, które są kolekcjami typów liczbowych, na przykład:

[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }

Poprzednie zachowanie

Chociaż został zignorowany podczas serializacji, JsonNumberHandlingAttribute można go zastosować do właściwości, które były kolekcjami typów innych niż liczba. Na przykład:

[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }

Nowe zachowanie

Począwszy od platformy .NET 6, jeśli stosujesz się JsonNumberHandlingAttribute do właściwości, która jest kolekcją wartości innych niż liczba i próbuje serializować lub deserializować właściwość, zgłaszana jest wartość .InvalidOperationException

Wprowadzona wersja

.NET 6

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Ta zmiana była efektem ubocznym optymalizacji wydajności dla funkcji obsługi numerów.

JsonNumberHandlingAttribute Usuń atrybut z niezgodnych właściwości kolekcji.

Dotyczy interfejsów API

System.Text.Json.JsonSerializer Wszystkie metody serializacji i deserializacji.