System.Text.Json unterstützt IAsyncEnumerable-Serialisierung
System.Text.Json unterstützt jetzt die Serialisierung und Deserialisierung von IAsyncEnumerable<T>-Instanzen.
Vorheriges Verhalten
In früheren Versionen hat System.Text.JsonIAsyncEnumerable<T>-Instanzen als leere JSON-Objekte ({}
) serialisiert. Die Deserialisierung schlug mit einer JsonException fehl.
Neues Verhalten
Asynchrone Serialisierungsmethoden zählen jetzt alle IAsyncEnumerable<T>-Instanzen in einem Objektgraphen auf und serialisieren sie dann als JSON-Arrays. Synchrone Serialisierungsmethoden unterstützen keine IAsyncEnumerable<T>-Serialisierung und lösen eine NotSupportedException aus.
Eingeführt in Version
.NET 6
Typ des Breaking Changes
Diese Änderung kann sich auf die Quellkompatibilität auswirken. Wenn Sie die Zielversion auf .NET 6 umstellen, erhalten Sie keine Kompilierzeitfehler, es können jedoch Unterschiede beim Serialisierungsverhalten zur Laufzeit auftreten.
Grund für die Änderung
Diese Änderung wurde eingeführt, um Unterstützung für das Streamen von IAsyncEnumerable<T>-Antworten in ASP.NET Core MVC hinzuzufügen.
Empfohlene Maßnahme
Überprüfen Sie, ob Ihre Serialisierungsmodelle Typen enthalten, die IAsyncEnumerable<T> implementieren, und bestimmen Sie, ob die Ausgabe der Enumeration in der JSON-Ausgabe wünschenswert ist. IAsyncEnumerable<T>-Serialisierung können Sie auf eine der folgenden Arten deaktivieren:
- Fügen Sie ein JsonIgnoreAttribute an die Eigenschaft an, die IAsyncEnumerable<T> enthält.
- Definieren Sie eine benutzerdefinierte Konverterfactory, die IAsyncEnumerable<T>-Instanzen als leere JSON-Objekte serialisiert.