Поделиться через


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

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

Прежнее поведение

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

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

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

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

.NET 6

Тип критического изменения

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

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

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

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

Затронутые API

См. также