Serialización IAsyncEnumerable de System.Text.Json
System.Text.Json ahora admite la serialización y deserialización de las instancias de IAsyncEnumerable<T>.
Comportamiento anterior
En versiones anteriores, System.Text.Json serializaba las instancias de IAsyncEnumerable<T> como objetos JSON vacíos ({}
). La deserialización generaba un error con la excepción JsonException.
Comportamiento nuevo
Los métodos de serialización asincrónicos enumeran ahora todas las instancias de IAsyncEnumerable<T> en un gráfico de objetos y, a continuación, las serializan como matrices JSON. Los métodos de serialización sincrónicos no admiten la serialización de IAsyncEnumerable<T> e inician una excepción NotSupportedException.
Versión introducida
.NET 6
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad de orígenes. Si vuelve a establecer como destino .NET 6, no recibirá errores en tiempo de compilación, pero puede encontrar diferencias en el comportamiento de serialización en tiempo de ejecución.
Motivo del cambio
Este cambio se introdujo para agregar compatibilidad con las respuestas de streaming IAsyncEnumerable<T> en ASP.NET Core MVC.
Acción recomendada
Compruebe si los modelos de serialización contienen tipos que implementan IAsyncEnumerable<T> y determine si es conveniente emitir la enumeración en la salida JSON. Puede deshabilitar la serialización de IAsyncEnumerable<T> de una de las maneras siguientes:
- Asocie un atributo JsonIgnoreAttribute a la propiedad que contiene la instancia de IAsyncEnumerable<T>.
- Defina un convertidor personalizado que serialice las instancias de IAsyncEnumerable<T> como objetos JSON vacíos.