C#后台请求restApi返回json字符串,请求成功之后返回json字符串,在对字符串反序列化的抛出异常,内存溢出。
请求回来的字符串写到本地txt大概260M
附上部分代码
补充下:返回的不只是数据,还有base64编码格式的文件流
你反序列化后能有多大?能把内存爆了?要不试试这样,把返回的json切割为多个json,然后一点一点反序列化并处理
我写到本地txt之后文件大概264M
@Mr·林: 哦,这个大小和反序列后的大小并不能画等号,你如果没有什么办法可以试试我这个,把大json文件分隔成小json文件试试
你的返回值真的有260M吗?如果没有,那可能是实体导航重复引用的造成的,使用[JsonIgnore]注解导航
有,主要是文件大
@Mr·林: 那就分批请求吧,比如一次请求20M
@Mr·林: 说实话,这么大的JSON,估计浏览器都不一定吃的消
试试 Stream
var serializer = new JsonSerializer();
using (var sr = new StreamReader(await response.Content.ReadAsStreamAsync()))
{
using (var jsonTextReader = new JsonTextReader(sr))
{
var model = serializer.Deserialize<JObject>(jsonTextReader);
}
}
试过了,还是抛出异常
手动来吧.