System.Text.Json IAsyncEnumerable のシリアル化

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

以前の動作

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

新しい動作

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

導入されたバージョン

.NET 6

破壊的変更の種類

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

変更理由

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

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

影響を受ける API

関連項目