当我尝试解析大约json
的大200mb
个文件时,我遇到了问题。
我是用Newtonsoft.Json
做的。它给出OutOfMemory
例外。
这是我的代码:
using (StreamReader sr=File.OpenText("path"))
{
JObject file= (JObject)JToken.ReadFrom(new JsonTextReader(sr));
}
我该怎么做? (最好使用JObject)
答案 0 :(得分:2)
您可以使用JsonTextReader
以DataReader
方式阅读此问题中所述的文字:
Incremental JSON Parsing in C#
您必须编写自己的逻辑来处理JSON数据,但它肯定会解决您的内存问题:
using (var reader = new JsonTextReader(File.OpenText("path")))
{
while (reader.Read())
{
// Your logic here (anything you need is in [reader] object), for instance:
if (reader.TokenType == JsonToken.StartArray)
{
// Process array
MyMethodToProcessArray(reader);
}
else if (reader.TokenType == JsonToken.StartObject)
{
// Process object
MyMethodToProcessObject(reader);
}
}
}
您实际上会构建一个递归JSON解析器。