Condividi tramite


JsonNumberHandlingAttribute nelle proprietà delle raccolte

In .NET 6 è stata introdotta una piccola modifica che causa un'interruzione per quanto riguarda l'attributo JsonNumberHandlingAttribute. Se si applica l'attributo a una proprietà che rappresenta una raccolta di valori non numerici e si tenta di serializzarla o deserializzarla, viene generata un'eccezione InvalidOperationException. L'attributo è valido solo per le proprietà che rappresentano raccolte di tipi numerici, ad esempio:

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

Comportamento precedente

Anche se veniva ignorato durante la serializzazione, JsonNumberHandlingAttribute poteva essere applicato a proprietà che rappresentavano raccolte di tipi non numerici. Ad esempio:

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

Nuovo comportamento

A partire da .NET 6, se si applica l'attributo JsonNumberHandlingAttribute a una proprietà che rappresenta una raccolta di valori non numerici e si tenta di serializzarla o deserializzarla, viene generata un'eccezione InvalidOperationException.

Versione di introduzione

.NET 6

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità binaria.

Motivo della modifica

Questa modifica è un effetto collaterale di un'ottimizzazione delle prestazioni per la funzionalità di gestione dei numeri.

Rimuovere l'attributo JsonNumberHandlingAttribute dalle proprietà di raccolte incompatibili.

API interessate

Tutti i metodi di serializzazione e deserializzazione System.Text.Json.JsonSerializer.