0
如何處理大量的JsonData?
我返回的數據包含200k +行。如何在MVC中處理大量的Json數據?
我已經將網絡配置文件設置爲ff。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
我也加了鑰匙。
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647 " />
問題是,當我穿上jsonResult一個破發點,返回的行,但我在瀏覽器上得到一個錯誤,說類型「System.OutOfMemoryException的」的引發異常。。
我的繼承人在控制器上的代碼
var jsonResult = Json(listofParticipant);
jsonResult.MaxJsonLength = int.MaxValue;
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsonResult;
UPDATE
我還試圖用Stream
,這樣的結果不會在內存中坐以待斃我越來越OutOfMemoryException
using (StreamWriter sw = new StreamWriter(@"D:\json.txt"))
{
using (JsonWriter writer = new JsonTextWriter(sw))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(writer, listofParticipant);
}
}
var xserializer = new JsonSerializer();
using (var sr = new StreamReader(@"D:\json.txt"))
using (var jsonTextReader = new JsonTextReader(sr))
{
var xx = xserializer.Deserialize<List<PatricipantSearchViewModel>>(jsonTextReader);
return Json(xx, "application/json", Encoding.Default, JsonRequestBehavior.AllowGet);
}
我也根據這裏的答案添加了這個代碼。
protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
{
return new JsonResult()
{
Data = data,
ContentType = contentType,
ContentEncoding = contentEncoding,
JsonRequestBehavior = behavior,
MaxJsonLength = Int32.MaxValue
};
}
您是否嘗試過使用JSON.Net或StackOverflow的JSON解串器而不是返回JsonResult嘗試返回文本? –
是的,我已經嘗試過JSON.Net,但是當序列化200k行的列表時仍然返回System.OutOfMemoryException –
這是很多數據,並且最終會導致大量內存使用。你有能力「分頁」數據嗎? –