2013-02-20 1 views
1

JSON StreamReader에서 비 직렬화해야합니다. 스트림의 모든 객체에 대해 중간 객체를 인스턴스화하지 않아도됩니다. .NET 용 풀 스타일 JSON StreamReader 파서가 있습니까?

  • JSON.NET

    StreamReader을지지 않습니다
    1. JsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters)처럼 호출 및
    2. 메모리 프로파일 러에서 볼 수 있듯이, 메모리에 JSON의 structore에 대한 Newtonsoft.Json.* 클래스의 전체 세트를 작성합니다. 내 JsonConverter들 _
  • JavaScriptSerializer도 전혀 Stream의를 지원하지 않는 것 때문에 _I'm 사실은 확실하지이는 경우입니다.
    1. 심지어 undocummented new JsonSerializer().Deserialize(new JsonTextReader(streamReader))

내가 제로 접근 방식에서 원하는 것은 SAX 또는 StAX 스타일 JSON 파서입니다. 내가 이상적으로 원하는 것은

, 클래스 T의 새로운 인스턴스에 직접 직렬화됩니다

object JsonCooler.DeserializeObject<T>(
    StreamReader jsonStream, Converter[] converters) 

같은 API가, 메모리에 자사의 중간 DOM과 같은 모든 개체를 유지하지 않습니다.

이러한 디시리얼라이저가 있습니까? 아니면 개념 수준에서 무엇을 놓치고 있습니까?

+0

결국 구현을 시작했습니다. 사용 예는 [https://github.com/ysharplanguage/FastJsonParser/blob/master/JsonTest/ParserTests.cs#L675](https://github.com/ysharplanguage/FastJsonParser/blob/)을 참조하십시오. master/JsonTest/ParserTests.cs # L675) – YSharp

+0

또한 관련 질문에 대한 다른 답변과 샘플을 참조하십시오. http://stackoverflow.com/a/23731522/1409653 – YSharp

답변

1

나는 점점 더 자주 사용 사례가 될 것으로 생각합니다. 나는 그것을 나는 또한 짧고 빠르게 유지하기 위해 노력하는이 작은 일을 통해 시간 지원을 고려하고 :

https://github.com/ysharplanguage/FastJsonParser

내가 그것을 안정 처음 만드는 여전히 바빠,하지만 당신은 시도를 제공하려는 경우 그 기회를 잡기 전에 포크에서 구현하면 TypeInfo 캐시에 (옵션 인) "reviver"콜백 위임자를 추가하는 것과 함께 Obj (int outer) 및 Arr (int outer) 메서드를 약간 수정할 수 있기를 바랍니다. . 스트림에서 다음 객체 "{...}"또는 배열 "[...]"이 내용을 완전히 deserialize해야하는지 여부를 응용 프로그램이 결정할 수 있도록 허용합니다.

'HTH,

0

LitJSONDataReader을 찾았습니다.하지만 꽤 오래된 것입니다. 더 나은 대답을 받아 들일 것입니다.