JsonNumberHandlingAttribute sur les propriétés d’une collection

Un changement cassant mineur a été introduit dans .NET 6 en ce qui concerne l’attribut JsonNumberHandlingAttribute. Si vous appliquez l’attribut à une propriété qui est une collection de valeurs autres que des nombres et que vous tentez de sérialiser ou de désérialiser la propriété, une exception InvalidOperationException est levée. L’attribut est valide uniquement pour les propriétés qui sont des collections de types numériques, par exemple :

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

Comportement précédent

Bien qu’il ait été ignoré lors de la sérialisation, JsonNumberHandlingAttribute peut être appliqué aux propriétés qui étaient des collections d’un autre type que des nombres. Par exemple :

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

Nouveau comportement

À compter de .NET 6, si vous appliquezJsonNumberHandlingAttribute à une propriété qui est une collection de valeurs autres que des nombres et que vous tentez de sérialiser ou de désérialiser la propriété, une InvalidOperationException est levée.

Version introduite

.NET 6

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

Ce changement a été un effet secondaire d’une optimisation des performances pour la fonctionnalité de gestion des nombres.

Supprimez l’attribut JsonNumberHandlingAttribute des propriétés de collection incompatibles.

API affectées

Toutes les méthodes de sérialisation et de désérialisation System.Text.Json.JsonSerializer.