Сериализация IAsyncEnumerable в System.Text.Json

System.Text.Json теперь поддерживает сериализацию и десериализацию IAsyncEnumerable<T> экземпляров.

Предыдущее поведение

В предыдущих версиях System.Text.Json сериализовывал IAsyncEnumerable<T> экземпляры в виде пустых объектов JSON ({}). Десериализация завершилась ошибкой JsonException.

Новое поведение

Теперь методы асинхронной сериализации перечисляют все IAsyncEnumerable<T> экземпляры в графе объектов, а затем сериализуют их в виде массивов JSON. Синхронные методы сериализации не поддерживают IAsyncEnumerable<T> сериализацию и вызывают исключение NotSupportedException.

Представленная версия

.NET 6

Тип разрушающего изменения

Это изменение может повлиять на совместимость исходного кода . Если вы перенаправляетесь на .NET 6, вы не получите никаких ошибок во время компиляции, но вы можете столкнуться с различиями в поведении сериализации во время выполнения.

Причина изменения

Это изменение было введено для добавления поддержки потоковых IAsyncEnumerable<T> ответов в ASP.NET Core MVC.

Проверьте, содержат ли ваши модели сериализации типы, реализующие IAsyncEnumerable<T>, и оцените, является ли эмиссия перечисления в выходных данных JSON желательной. Сериализацию можно отключить с помощью одного из следующих методов: IAsyncEnumerable<T>

Затронутые API

См. также