【问题标题】:Is there a pull-style JSON StreamReader parser for .NET?.NET 是否有拉式 JSON StreamReader 解析器?
【发布时间】:2013-02-06 02:06:57
【问题描述】:

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

  • JSON.NETJsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters) 一样调用
    1. 不接受StreamReader,并且
    2. 在内存中为 JSON 结构创建整组 Newtonsoft.Json.* 类,如内存分析器所示。 _我不确定是不是这样,因为我的JsonConverters _
  • JavaScriptSerializer 似乎也根本不支持 Streams。
    1. 甚至没有记录new JsonSerializer().Deserialize(new JsonTextReader(streamReader))

我想要的零方法是 SAXStAX 样式的 JSON 解析器。

理想情况下,我想要的是一个类似的 API

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

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

这样的反序列化器存在吗?或者我在概念层面缺少什么?

【问题讨论】:

标签: .net json parsing json.net xmlpullparser


【解决方案1】:

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

https://github.com/ysharplanguage/FastJsonParser

我仍然忙于首先使其稳定,但如果您想在我有机会之前尝试在分叉中实现它,希望这足以稍微修改 Obj(int external) 和 Arr (int external) 方法,以及向 TypeInfo 缓存添加(可选)“reviver”回调委托。这将允许应用程序决定流中的下一个对象“{ ... }”或数组“[ ... ]”是否/何时需要完全反序列化其内容。

'HTH,

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多