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

另请参阅