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> 序列化:

受影响的 API

另请参阅