Sérialisation de System.Text.Json IAsyncEnumerable
System.Text.Json prend désormais en charge la sérialisation et la désérialisation des instances IAsyncEnumerable<T>.
Comportement précédent
Dans les versions précédentes, System.Text.Json les instances sérialisées IAsyncEnumerable<T> en tant qu’objets JSON vides ({}
). Échec de la désérialisation avec une JsonException.
Nouveau comportement
Les méthodes de sérialisation asynchrone énumèrent désormais les instances IAsyncEnumerable<T> d’un graphe d’objets, puis les sérialisent en tant que tableaux JSON. Les méthodes de sérialisations synchrones ne prennent pas en charge la sérialisation IAsyncEnumerable<T> et lèvent une NotSupportedException.
Version introduite
.NET 6
Type de changement cassant
Ce changement peut affecter la compatibilité source. Si vous reciblez vers .NET 6, vous n’obtiendrez pas d’erreurs de compilation, mais vous pouvez rencontrer des différences de comportement de sérialisation au moment de l’exécution.
Raison du changement
Ce changement a été introduit pour ajouter le support des réponses de diffusion en continu IAsyncEnumerable<T> dans ASP.NET Core MVC.
Action recommandée
Vérifiez si vos modèles de sérialisation contiennent des types qui implémentent IAsyncEnumerable<T> et déterminez si l’émission de l’énumération dans la sortie JSON est souhaitable. Vous pouvez désactiver la sérialisation IAsyncEnumerable<T> de l'une des façons suivantes :
- Attachez un JsonIgnoreAttribute à la propriété contenant le IAsyncEnumerable<T>.
- Définissez une fabrique de convertisseurs personnalisée qui sérialise les instances IAsyncEnumerable<T> en tant qu’objets JSON vides.