是否有针对.NET的拉式JSON StreamReader解析器?

时间:2013-02-20 21:48:41

标签: .net json parsing json.net xmlpullparser

我需要从JSON StreamReader反序列化,而不为该流中的每个对象实例化中间对象。

  • JSON.NET调用JsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters)
    1. 不接受StreamReader
    2. 在内存中为内存分析器显示的JSON结构的Newtonsoft.Json.*类创建。 _我不确定是这种情况,因为我的JsonConverter s _
  • JavaScriptSerializer似乎也不支持Stream
    1. 甚至未记载的new JsonSerializer().Deserialize(new JsonTextReader(streamReader))

我想要的零方法是SAXStAX风格的JSON解析器。

理想情况下,我想要的是像

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

将直接反序列化为类T的新实例,而不是将所有类似中间DOM的对象保留在内存中。

这样的解串器是否存在?或者我在概念层面缺少什么?

2 个答案:

答案 0 :(得分:1)

我怀疑这是一个越来越频繁的用例。我正在考虑通过这个小小的那个来支持它,我也努力保持简短和快速:

https://github.com/ysharplanguage/FastJsonParser

我还在忙着让它稳定下来,但是如果你想在我有机会之前尝试在fork中实现它,那么希望能够略微修改Obj(int outer)和Arr (int outer)方法,以及向TypeInfo缓存添加(可选)“reviver”回调委托。那个允许应用程序决定是否/何时流中的下一个对象“{...}”或数组“[...]”需要完全反序列化。

“HTH,

答案 1 :(得分:0)

我在LitJSON中找到DataReader,但它过时了。会接受任何更好的答案。