Serialização IAsyncEnumerable do System.Text.Json
System.Text.Json agora dá suporte à serialização e desserialização de instâncias IAsyncEnumerable<T>.
Comportamento anterior
Em versões anteriores, System.Text.Json serializou instâncias IAsyncEnumerable<T> como objetos JSON vazios ({}
). Falha na desserialização com um JsonException.
Novo comportamento
Os métodos de serialização assíncrona agora enumeram todas as instâncias IAsyncEnumerable<T> em um grafo de objeto e, em seguida, serializam-nas como matrizes JSON. Métodos de serializações síncronas não dão suporte à serialização IAsyncEnumerable<T> e geram um NotSupportedException.
Versão introduzida
.NET 6
Tipo de alteração interruptiva
Essa alteração pode afetar a compatibilidade da origem. Se você redirecionar ao .NET 6, não receberá erros em tempo de compilação, mas poderá encontrar diferenças de comportamento de serialização em tempo de execução.
Motivo da alteração
Essa alteração foi introduzida para adicionar suporte para respostas de streaming IAsyncEnumerable<T> no MVC do ASP.NET Core.
Ação recomendada
Verifique se os modelos de serialização contêm tipos que implementam IAsyncEnumerable<T> e determinam se a enumeração na saída JSON é desejável. Você pode desabilitar a serialização IAsyncEnumerable<T> de uma das seguintes maneiras:
- Anexe JsonIgnoreAttribute à propriedade que contém IAsyncEnumerable<T>.
- Defina uma fábrica de conversores personalizada que serializa instâncias IAsyncEnumerable<T> como objetos JSON vazios.