System.Text.Json IAsyncEnumerable 序列化
System.Text.Json 現支援 IAsyncEnumerable<T> 執行個體的序列化和還原序列化。
先前的行為
在先前的版本中,System.Text.Json 會將 IAsyncEnumerable<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> 的屬性。
- 定義自訂轉換器中心,以將 IAsyncEnumerable<T> 執行個體序列化為空的 JSON 物件。