从json流中读取大blob

时间:2017-11-01 20:51:50

标签: c# json asynchronous stream json.net

我需要使用包含大量数据(但不是那么多节点)的JSON流,例如:

{
  "meta": {
    "status": "ok"
  },
  "items": [
    {
      "name": "name of item 1",
      "data": "In reality this could be a really long string of several hundred MB."
    }
  ]
}

当读取此JSON流时,我希望在数据进入时处理data字符串,而无需将整个字符串放在内存中。

Json.NET有一个JsonReader类,允许在节点进入时对其进行解码,但它会将整个节点保留在内存中。

有没有办法用Json.NET实现我想要的东西,还是有另外一个可以做到这一点的JSON库(必须与.Net Core兼容)?

注意:对于XML,这可以使用System.Xml.XmlReader类来解决,该类作为ReadValueChunkAsync方法允许从传入流中读取块中的大数据。

1 个答案:

答案 0 :(得分:0)

你的问题听起来像不是图书馆的一部分,因为它非常特别。 JSON的大小问题通常来自处理大型数组,其中存在Newtonsoft.JSON中的解决方案(即将StreamReader传递给JsonReader)。

这可能对你有帮助吗?

http://www.drdobbs.com/windows/parsing-big-records-with-jsonnet/240165316