System.Text.Json IAsyncEnumerable serializace
System.Text.Json nyní podporuje serializaci a deserializaci IAsyncEnumerable<T> instancí.
Předchozí chování
V předchozích verzích System.Text.Json serializované IAsyncEnumerable<T> instance jako prázdné objekty JSON ({}
). Deserializace selhala s chybou JsonException.
Nové chování
Asynchronní metody serializace nyní vyčíslují všechny IAsyncEnumerable<T> instance v grafu objektu a pak je serializují jako pole JSON. Synchronní serializace metody nepodporují IAsyncEnumerable<T> serializaci a vyvolat NotSupportedException.
Zavedená verze
.NET 6
Typ zásadní změny
Tato změna může mít vliv na kompatibilitu zdroje. Pokud retarget na .NET 6, nezobrazí se žádné chyby v době kompilace, ale můžete zaznamenat rozdíly chování serializace za běhu.
Důvod změny
Tato změna byla zavedena, aby se v ASP.NET Core MVC přidala podpora pro odpovědi na streamování IAsyncEnumerable<T> .
Doporučená akce
Zkontrolujte, jestli modely serializace obsahují typy, které implementují IAsyncEnumerable<T> , a zjistěte, jestli je žádoucí vygenerovat výčet ve výstupu JSON. Serializaci můžete zakázat IAsyncEnumerable<T> jedním z následujících způsobů:
- JsonIgnoreAttribute Připojit k vlastnosti obsahující .IAsyncEnumerable<T>
- Definujte vlastní objekt pro převaděče, který serializuje IAsyncEnumerable<T> instance jako prázdné objekty JSON.