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.

Entfernen Sie das Attribut JsonNumberHandlingAttribute aus inkompatiblen Auflistungseigenschaften.

Betroffene APIs

Alle Serialisierungs- und Deserialisierungsmethoden von System.Text.Json.JsonSerializer.