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 に答える