Sdílet prostřednictvím


JsonNumberHandlingAttribute u vlastností kolekce

V .NET 6 byla zavedena menší změna způsobující chybu, pokud jde o JsonNumberHandlingAttribute atribut. Pokud použijete atribut na vlastnost, která je kolekce nečíslných hodnot a pokusíte se serializovat nebo deserializovat vlastnost, InvalidOperationException je vyvolána. Atribut je platný pouze pro vlastnosti, které jsou kolekcemi typů čísel, například:

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

Předchozí chování

I když byl ignorován během serializace, JsonNumberHandlingAttribute lze použít u vlastností, které byly kolekcemi nečíslových typů. Příklad:

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

Nové chování

Počínaje rozhraním .NET 6 platí pro vlastnost, JsonNumberHandlingAttribute která je kolekcí nečíslových hodnot a pokusíte se serializovat nebo deserializovat vlastnost, InvalidOperationException vyvolá se.

Zavedená verze

.NET 6

Typ zásadní změny

Tato změna může ovlivnit binární kompatibilitu.

Důvod změny

Tato změna byla vedlejším účinkem optimalizace výkonu pro funkci zpracování čísel.

JsonNumberHandlingAttribute Odeberte atribut z nekompatibilních vlastností kolekce.

Ovlivněná rozhraní API

System.Text.Json.JsonSerializer Všechny metody serializace a deserializace.