次の方法で共有


System.Text.JsonにおけるIAsyncEnumerableのシリアル化

System.Text.Json では、 IAsyncEnumerable<T> インスタンスのシリアル化と逆シリアル化がサポートされるようになりました。

以前の動作

以前のバージョンでは、System.Text.JsonIAsyncEnumerable<T>インスタンスを空の JSON オブジェクト ({}) としてシリアル化しました。 JsonExceptionで逆シリアル化に失敗しました。

新しい動作

非同期シリアル化メソッドは、オブジェクト グラフ内の IAsyncEnumerable<T> インスタンスを列挙し、それらを JSON 配列としてシリアル化するようになりました。 同期シリアル化メソッドでは IAsyncEnumerable<T> のシリアル化はサポートされず、NotSupportedException がスローされます。

導入されたバージョン

.NET 6

破壊的変更の種類

この変更は ソースの互換性に影響を与える可能性があります。 .NET 6 に再ターゲットすると、コンパイル時エラーは発生しませんが、実行時のシリアル化動作の違いが発生する可能性があります。

変更の理由

この変更は、ASP.NET Core MVC でストリーミング IAsyncEnumerable<T> 応答のサポートを追加するために導入されました。

シリアル化モデルに IAsyncEnumerable<T> を実装する型が含まれているかどうかを確認し、JSON 出力で列挙型を出力することが望ましいかどうかを判断します。 IAsyncEnumerable<T>シリアル化は、次のいずれかの方法で無効にすることができます。

影響を受ける API

こちらも参照ください