Serialização System.Text.Json IAsyncEnumerable
System.Text.Json agora oferece suporte à serialização e desserialização de IAsyncEnumerable<T> instâncias.
Comportamento anterior
Em versões anteriores, System.Text.Json instâncias serializadas IAsyncEnumerable<T> como objetos JSON vazios ({}
). A desserialização falhou com um JsonExceptionarquivo .
Novo comportamento
Os métodos de serialização assíncrona agora enumeram quaisquer IAsyncEnumerable<T> instâncias em um gráfico de objeto e, em seguida, serializam-nas como matrizes JSON. Os métodos de serialização síncrona não oferecem suporte à IAsyncEnumerable<T> serialização e lançam um NotSupportedExceptionarquivo .
Versão introduzida
.NET 6
Tipo de mudança de rutura
Essa alteração pode afetar a compatibilidade da fonte. Se você redirecionar para o .NET 6, não obterá erros em tempo de compilação, mas poderá encontrar diferenças de comportamento de serialização em tempo de execução.
Razão para a alteração
Essa alteração foi introduzida para adicionar suporte para respostas de streaming IAsyncEnumerable<T> no ASP.NET Core MVC.
Ação recomendada
Verifique se seus modelos de serialização contêm tipos que implementam IAsyncEnumerable<T> e determine se emitir a enumeração na saída JSON é desejável. Você pode desabilitar IAsyncEnumerable<T> a serialização de uma das seguintes maneiras:
- Anexe a JsonIgnoreAttribute à propriedade que contém o IAsyncEnumerable<T>arquivo .
- Defina uma fábrica de conversores personalizada que serialize IAsyncEnumerable<T> instâncias como objetos JSON vazios.