2

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

这是我的代码:

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

我怎样才能做到这一点 ?(最好使用 JObject )

4

1 回答 1

3

您可以使用此问题JsonTextReader中所述的方式阅读文本:DataReader

C# 中的增量 JSON 解析

您必须编写自己的逻辑来处理 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 解析器。

于 2013-01-16T10:56:44.813 回答