ServiceStack.Text 处理输入流

ServiceStack.Text Disposes Input Stream

从流中反序列化数据时 ServiceStack.Text 关闭输入流。由于 Github 上没有问题跟踪器,并且他们的网站引用了 SO 我 post 这里的问题。 致电

 JsonSerializer.DeserializeFromStream<T>(stream);

将处理输入流,在我看来这是一个错误,因为后面可能还有其他仅以对象为前缀的数据。据我所知,没有其他序列化程序以这种方式运行。

最新的 v5.1.1 of ServiceStack.Text on MyGet 不应再自动关闭流。

ServiceStack.Text 也被重写为使用 .NET 的新 ReadOnlySpan<char>,可以直接访问:

ReadOnlySpan<char> jsonSpan = json.AsSpan();
var dto = JsonSerializer.DeserializeFromSpan<T>(jsonSpan);

还有一个新的 API 用于异步读取流:

var dto = await JsonSerializer.DeserializeFromStreamAsync<T>(stream);