Мне нужно десериализовать из JSON StreamReader
без создания промежуточных объектов для каждого объекта в этом потоке.Есть ли для JSON StreamReader синтаксический анализатор для .NET?
- JSON.NET вызывается как
JsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters)
- не принимает
StreamReader
и - создает в памяти весь набор
Newtonsoft.Json.*
классов для structore JSON, а профилировщика памяти шоу. _I'm фактически не уверен, что это так, потому что моиJsonConverter
s _
- не принимает
- JavaScriptSerializer также, кажется, не поддерживает
Stream
с на всех.- И даже undocummented
new JsonSerializer().Deserialize(new JsonTextReader(streamReader))
- И даже undocummented
То, что я хочу в нулевом подходе является SAX или StAX -стиль JSON парсер.
То, что я хочу, в идеале, это API, как
object JsonCooler.DeserializeObject<T>(
StreamReader jsonStream, Converter[] converters)
который будет десериализации непосредственно в новый экземпляр класса T
, не сохраняя все свои промежуточные DOM-подобные объекты в памяти.
Существует ли такой десериализатор? Или что мне не хватает на уровне концепции?
В конце концов я в первую очередь осуществил его; для примера использования см.: [https://github.com/ysharplanguage/FastJsonParser/blob/master/JsonTest/ParserTests.cs#L675](https://github.com/ysharplanguage/FastJsonParser/blob/ master/JsonTest/ParserTests.cs # L675) – YSharp
Также см. другой ответ и образец, которые я дал связанному вопросу: http://stackoverflow.com/a/23731522/1409653 – YSharp