使用MVC模型,我想编写一个JsonResult,将Json字符串流式传输到客户端,而不是一次性将所有数据转换为Json字符串再将其流式传输回客户端。
我有一些操作需要发送非常大的(超过300,000条记录)作为Json传输,我认为基本的JsonResult实现不可扩展。
我正在使用Json.net,我想知道是否有一种方法可以在转换时将Json字符串的块流式传输。
我有一些操作需要发送非常大的(超过300,000条记录)作为Json传输,我认为基本的JsonResult实现不可扩展。
我正在使用Json.net,我想知道是否有一种方法可以在转换时将Json字符串的块流式传输。
//Current implementation:
response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(Data, formatting));
response.End();
//I know I can use the JsonSerializer instead
Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer();
serializer.Serialize(textWriter, Data);
然而,我不确定如何将块写入textWriter并写入响应,并调用响应.Flush()直到所有300,000条记录都转换为Json。
这样做是否可能?
BufferedStream
包装OutputStream
。然而,这个问答似乎表明,在.NET中,大多数流已经非常好地优化了缓冲区。如果是这种情况,也许最好根本不要调用Flush
,只需在内部缓冲区满时让流自行处理即可。不确定,你需要进行测试。 - Brian Rogers