Serializzazione IAsyncEnumerable System.Text.Json
System.Text.Json ora supporta la serializzazione e la deserializzazione delle istanze IAsyncEnumerable<T>.
Comportamento precedente
Nelle versioni precedenti, System.Text.Json serializzava le istanze IAsyncEnumerable<T> come oggetti JSON vuoti ({}
). Deserializzazione non riuscita con un JsonException.
Nuovo comportamento
I metodi di serializzazione asincroni ora enumerano tutte le istanze di IAsyncEnumerable<T> in un grafico di oggetti e quindi le serializzano come matrici JSON. I metodi di serializzazione sincrona non supportano la serializzazione IAsyncEnumerable<T> e generano un'eccezione NotSupportedException.
Versione di introduzione
.NET 6
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità dell'origine. Se si ripristina .NET 6, non si otterranno errori in fase di compilazione, ma potrebbero verificarsi differenze di comportamento della serializzazione in fase di esecuzione.
Motivo della modifica
Questa modifica è stata introdotta per aggiungere il supporto alle risposte di streaming IAsyncEnumerable<T> in MVC ASP.NET Core.
Azione consigliata
Controlla se i tuoi modelli di serializzazione contengono tipi che implementano IAsyncEnumerable<T> e determina se generare l'enumerazione nell'output JSON è auspicabile. Puoi disabilitare la serializzazione IAsyncEnumerable<T> in uno dei modi seguenti:
- Associa un JsonIgnoreAttribute alla proprietà contenente IAsyncEnumerable<T>.
- Definisci una factory del convertitore personalizzata che serializza le istanze IAsyncEnumerable<T> come oggetti JSON vuoti.