大きな JSON ファイルの Json.NET ストリーミング
メモリ制限により、巨大な JSON ファイルの解析が困難になる場合があります。 Json.NET は、これらのファイルをストリーミングし、データを段階的に読み取り、処理する方法を提供します。
オブジェクトごとのストリーミング
一連の同一のオブジェクトを含む JSON ファイルを扱う場合は、一度に 1 つのオブジェクトを解析して処理するのが最善です。これを行うには、C# リストへの逆シリアル化を避けてください。 次のコードを使用できます:
<code class="language-csharp">JsonSerializer serializer = new JsonSerializer(); MyObject o; using (FileStream s = File.Open("bigfile.json", FileMode.Open)) using (StreamReader sr = new StreamReader(s)) using (JsonReader reader = new JsonTextReader(sr)) { while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { o = serializer.Deserialize<MyObject>(reader); // 处理对象 o } } }</code>
このコードは、オブジェクトの開始タグ {
が見つかった場合にのみ逆シリアル化することで、オブジェクトの解析を簡素化します。
ネストされたオブジェクトとリストの処理
質問で述べたように、JSON オブジェクトにはネストされたオブジェクトとリストが含まれています。 Json.NET の「オブジェクト優先」解析ではこれらの要素がスキップされるため、必要に応じて手動で逆シリアル化する必要があります。これを行うには、各オブジェクトのプロパティを繰り返し処理し、必要に応じてネストされたデータを処理します。
以上がJson.NET は、ネストされたオブジェクトやリストを処理しながら、大きな JSON ファイルを効率的にストリーミングおよび解析するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。