从流中反序列化数据ServiceStack.Text会关闭输入流。由于Github上没有问题跟踪器,他们的网站引用了我在这里发布问题。 致电
JsonSerializer.DeserializeFromStream<T>(stream);
将处理输入流,这在我看来是一个错误,因为可能有其他数据,后面只有一个对象前缀。我所知道的其他序列化器没有这种行为。
答案 0 :(得分:1)
最新的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);