JsonNumberHandlingAttribute voor verzamelingseigenschappen

Er is een brekende wijziging geïntroduceerd in .NET 6 met betrekking tot het JsonNumberHandlingAttribute kenmerk. Als u het kenmerk toepast op een eigenschap die een verzameling niet-numerieke waarden is en probeert de eigenschap te serialiseren of deserialiseren, wordt er een InvalidOperationException gegenereerd. Het kenmerk is alleen geldig voor eigenschappen die verzamelingen van getaltypen zijn, bijvoorbeeld:

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

Vorig gedrag

Hoewel deze tijdens de serialisatie werd genegeerd, JsonNumberHandlingAttribute kan deze worden toegepast op eigenschappen die verzamelingen van niet-numerieke typen zijn. Voorbeeld:

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

Nieuw gedrag

Vanaf .NET 6, als u JsonNumberHandlingAttribute toepast op een eigenschap die een verzameling van niet-numerieke waarden is en probeert de eigenschap te serialiseren of deserialiseren, wordt er een InvalidOperationException uitgelokt.

Geïntroduceerde versie

.NET 6

Type van brekende verandering

Deze wijziging kan van invloed zijn op binaire compatibiliteit.

Reden voor wijziging

Deze wijziging was een neveneffect van een prestatieoptimalisatie voor de functie voor het verwerken van getallen.

Verwijder het JsonNumberHandlingAttribute kenmerk uit niet-compatibele verzamelingseigenschappen.

Betreffende API's

System.Text.Json.JsonSerializer Alle serialisatie- en deserialisatiemethoden.