从 json 流读取大型 blob



我需要处理包含大量数据(但不是那么多节点)的 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方法,允许从传入流中读取块中的大数据。

您的问题听起来像是不属于库的一部分,因为它非常特殊。JSON的大小问题通常来自处理巨大的数组,Newtonsoft.JSON中存在解决方案(即将StreamReader传递给JsonReader)。

这可能对您有帮助吗?

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

最新更新