2016-07-18 3 views
3

스트림을 통해 거대한 JSON (1.4GB)을 deserialize하는 중입니다. 파싱하기 전에 전체 내용을 메모리에 미리로드하고 싶지 않기 때문입니다. 괜찮 으면 좋겠지 만 ~ 80 초가 걸리므로 진행 상황을 표시하고 싶습니다.JSON 역 직렬화 진행 중

public JObject DeserializeViaStream(string filename) 
{ 
    object obj; 
    var serializer = new JsonSerializer(); 
    using (var sr = new StreamReader(new FileStream(filename, FileMode.Open))) 
    { 
     using (var jsonTextReader = new JsonTextReader(sr)) 
     { 
      obj = serializer.Deserialize(jsonTextReader); 
     } 
    } 
    return (JObject) obj; 
} 

난 아직 시도했지만하지 않은 단 하나의 생각 : 나는 바이트를 추적 내 자신의 스트림 리더 읽기 및 파일 길이가 비교되고 구현할 수있다.

내장 옵션이나 쉬운 방법이 있습니까?

+0

해결책을 찾았습니까? – user2441511

+1

@ user2441511 : 내 대답은 아래를 참조하십시오. ProgressStream이 작동했습니다. –

답변