我需要使用包含大量数据(但不是那么多节点)的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
方法允许从传入流中读取块中的大数据。
答案 0 :(得分:0)
你的问题听起来像不是图书馆的一部分,因为它非常特别。 JSON的大小问题通常来自处理大型数组,其中存在Newtonsoft.JSON中的解决方案(即将StreamReader传递给JsonReader)。
这可能对你有帮助吗?
http://www.drdobbs.com/windows/parsing-big-records-with-jsonnet/240165316