JsonNumberHandlingAttribute in Auflistungseigenschaften
Ein kleinerer Breaking Change wurde in .NET 6 in Bezug auf das Attribut JsonNumberHandlingAttribute eingeführt. Wenn Sie das Attribut auf eine Eigenschaft anwenden, bei der es sich um eine Auflistung von Nicht-Zahlenwerten handelt, und versuchen, die Eigenschaft zu serialisieren oder zu deserialisieren, wird eine InvalidOperationException ausgelöst. Das Attribut ist nur für Eigenschaften gültig, bei denen es sich um Auflistungen von Zahlentypen handelt, wie z. B.:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }
Vorheriges Verhalten
Obwohl es während der Serialisierung ignoriert wurde, konnte JsonNumberHandlingAttribute auf Eigenschaften angewendet werden, die Auflistungen von nicht zahlenbasierten Typen waren. Beispiel:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }
Neues Verhalten
Ab .NET 6 gilt: Wenn Sie JsonNumberHandlingAttribute auf eine Eigenschaft anwenden, bei der es sich um eine Auflistung von Nicht-Zahlenwerten handelt, und versuchen, die Eigenschaft zu serialisieren oder zu deserialisieren, wird eine InvalidOperationException ausgelöst.
Eingeführt in Version
.NET 6
Typ des Breaking Changes
Diese Änderung kann sich auf die binäre Kompatibilität auswirken.
Grund für die Änderung
Diese Änderung war ein Nebeneffekt einer Leistungsoptimierung für das Zahlenverarbeitungsfeature.
Empfohlene Aktion
Entfernen Sie das Attribut JsonNumberHandlingAttribute aus inkompatiblen Auflistungseigenschaften.
Betroffene APIs
Alle Serialisierungs- und Deserialisierungsmethoden von System.Text.Json.JsonSerializer.