【发布时间】:2016-09-06 18:28:04
【问题描述】:
有没有办法将大型 JSON 对象直接流式传输到 HttpResponseMessage 流?
这是我现有的代码:
Dictionary<string,string> hugeObject = new Dictionary<string,string>();
// fill with 100,000 key/values. Each string is 32 chars.
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent(
content: JsonConvert.SerializeObject(hugeObject),
encoding: Encoding.UTF8,
mediaType: "application/json");
这适用于较小的对象。但是,调用 JsonConvert.SerializeObject() 将对象转换为字符串的过程会导致大对象的内存峰值出现问题。
【问题讨论】:
-
你能发布你的大对象的结构吗?
-
添加了hugeObject的示例...
-
您是否尝试过您链接的页面上的Manual Serialization 部分?
-
@krillgar 看起来很有希望,但我不知道该写什么。我可以为响应创建一个 StreamContent HttpContent,但我必须提供流。
-
使用关注点分离,我会创建一个类,如
JsonConvert来处理转换过程。您应该为您的每个对象添加一个方法,如果您有它们可用于将该对象写入流。如果你正在研究Dictionary<string, string>之类的东西,那么你显然没有这种能力,并且可以将其封装在新类中。
标签: c# .net json json.net httpclient