Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
System.Text.Json now supports serializing and deserializing of IAsyncEnumerable<T> instances.
Previous behavior
In previous versions, System.Text.Json serialized IAsyncEnumerable<T> instances as empty JSON objects ({}
). Deserialization failed with a JsonException.
New behavior
Asynchronous serialization methods now enumerate any IAsyncEnumerable<T> instances in an object graph and then serialize them as JSON arrays. Synchronous serializations methods do not support IAsyncEnumerable<T> serialization and throw a NotSupportedException.
Version introduced
.NET 6
Type of breaking change
This change can affect source compatibility. If you retarget to .NET 6, you won't get any compile-time errors, but you may encounter run-time serialization behavior differences.
Reason for change
This change was introduced to add support for streaming IAsyncEnumerable<T> responses in ASP.NET Core MVC.
Recommended action
Check if your serialization models contain types that implement IAsyncEnumerable<T> and determine if emitting the enumeration in the JSON output is desirable. You can disable IAsyncEnumerable<T> serialization in one of the following ways:
- Attach a JsonIgnoreAttribute to the property containing the IAsyncEnumerable<T>.
- Define a custom converter factory that serializes IAsyncEnumerable<T> instances as empty JSON objects.