是否有用于.NET的拉式JSON StreamReader解析器?
问题描述:
我需要从JSON StreamReader
反序列化,而无需为该流中的每个对象实例化中间对象。是否有用于.NET的拉式JSON StreamReader解析器?
-
JSON.NET调用像
JsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters)
- 不接受
StreamReader
,并且 - 在内存中创建了一整套
Newtonsoft.Json.*
类的JSON structore,因为内存分析器节目。 _I'm实际上并不一定是这样的话,因为我JsonConverter
小号
- 不接受
-
JavaScriptSerializer也似乎_不支持
Stream
s的一切。- 甚至undocummented
new JsonSerializer().Deserialize(new JsonTextReader(streamReader))
- 甚至undocummented
我想理想是什么,就像是
object JsonCooler.DeserializeObject<T>(
StreamReader jsonStream, Converter[] converters)
的API,这将直接反序列化为T
类的新实例,而不是保持所有的中间DOM的内存中的对象。
这样的解串器存在吗?或者我在概念层面缺少什么?
答
我怀疑这是一个越来越频繁的用例。我正在考虑支持它通过这个小家伙,我也努力保持短期和快速的一段时间:
https://github.com/ysharplanguage/FastJsonParser
我还在忙着使其稳居第一,但如果你想给在试在得到机会之前在fork中实现它,希望能够稍微修改Obj(int outer)和Arr(int outer)方法,并向TypeInfo缓存中添加(可选)“reviver”回调委托。这将允许应用程序决定是否/何时流中的下一个对象“{...}”或数组“[...]”需要将其内容完全反序列化。
'HTH,
我终于有了第一个去执行它;有关使用示例,请参阅: [https://github.com/ysharplanguage/FastJsonParser/blob/master/JsonTest/ParserTests.cs#L675](https://github.com/ysharplanguage/FastJsonParser/blob/主/ JsonTest/ParserTests.cs#L675) – YSharp 2014-04-27 00:52:29
此外,请参阅其他答案和示例我给了一个相关的问题:http://*.com/a/23731522/1409653 – YSharp 2014-05-19 15:11:51