大きな JSON ファイルの解析は、特に JSON 構造が標準ではない場合、.NET で困難になる可能性があります。 JsonConvert.Deserialize メソッドを使用するときに発生する一般的な問題の 1 つは、大きなファイルに対して例外がスローされる可能性があることです。
この問題は通常、JSON ファイルに区切り文字のない配列とその後に続く別の配列が含まれている場合に発生します。この形式は JSON では無効であるため、JsonConvert.Deserialize が失敗します。
この問題を解決するために、Json.NET は、JSON コンテンツのより柔軟な解析を可能にする JsonTextReader クラスを提供します。 JsonTextReader で SupportMultipleContent フラグを true に設定すると、単一の JSON ファイルから複数の配列を個別のオブジェクトとして解析できます。
この手法を示す更新されたコード サンプルは次のとおりです。
using (WebClient client = new WebClient()) using (Stream stream = client.OpenRead(stringUrl)) using (StreamReader streamReader = new StreamReader(stream)) using (JsonTextReader reader = new JsonTextReader(streamReader)) { reader.SupportMultipleContent = true; var serializer = new JsonSerializer(); while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { Contact c = serializer.Deserialize<Contact>(reader); Console.WriteLine(c.FirstName + " " + c.LastName); } } }
このアプローチこれにより、配列の数や各配列内の項目に関係なく、メモリ効率の高い方法で非標準の JSON ファイルを解析できます。質問で提供されているサンプル JSON は、この手法を使用して正常に処理できます。
完全なデモについては、次のリンクを参照してください: https://dotnetfiddle.net/2TQa8p
以上が.NET で大規模な複数配列の JSON ファイルを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。