我需要处理包含大量数据(但不是那么多节点)的 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