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>シリアル化は、次のいずれかの方法で無効にすることができます。
- JsonIgnoreAttributeを含むプロパティにIAsyncEnumerable<T>をアタッチします。
- インスタンスを空の JSON オブジェクトとしてシリアル化するIAsyncEnumerable<T>を定義します。
影響を受ける API
こちらも参照ください
.NET