JObject的内存不足

时间:2013-01-16 10:43:01

标签: c# json parsing json.net

当我尝试解析大约json的大200mb个文件时,我遇到了问题。 我是用Newtonsoft.Json做的。它给出OutOfMemory例外。

这是我的代码:

using (StreamReader sr=File.OpenText("path"))
        {
            JObject file= (JObject)JToken.ReadFrom(new JsonTextReader(sr));
        }

我该怎么做? (最好使用JObject)

1 个答案:

答案 0 :(得分:2)

您可以使用JsonTextReaderDataReader方式阅读此问题中所述的文字:

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解析器。