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 " />
문제
내가 그것을 행을 반환하지만 내가 유형 'System.OutOfMemoryException'의 예외가 발생 된 것을 말하는 브라우저에 오류를 받고있어 jsonResult에 중단 점을 넣을 때입니다..을 Heres 컨트롤러에 내 코드
var jsonResult = Json(listofParticipant);
jsonResult.MaxJsonLength = int.MaxValue;
jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsonResult;
나는 또한 결과가 메모리에 앉아되지 않도록 Stream
를 사용하려고
UPDATE 여전히 나는 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 행의 목록을 serialize 할 때 System.OutOfMemoryException을 반환합니다. –
많은 양의 데이터가 사용되며 많은 메모리가 사용됩니다. 데이터를 "페이지"할 수 있습니까? –