Json.NET を使用した .NET での大きな不正な JSON ファイルの解析
大きな JSON ファイルの解析は、特に次の場合に .NET で困難になることがあります。 JSON の形式が不正です。この記事では、非常に大きな JSON ファイルを解析するときに遭遇する課題を調査し、Json.NET を使用した解決策を提供します。
問題: 入れ子になった配列構造
1大きな JSON ファイルに共通する問題は、構造が複雑であることです。あなたの場合、JSON ファイルにはオブジェクトの配列が含まれていますが、各配列はすぐに閉じたり開いたりする括弧で囲まれています。これにより、JSON は全体として見ると技術的に無効になります。
SupportMultipleContent で JsonTextReader を使用する
この不正な JSON 形式を処理するために、Json.NET は、 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); } } }
この例では、JSONTextReader は最初にトークン タイプをチェックします。オブジェクト開始トークンに遭遇すると、JsonSerializer を使用して現在のオブジェクトを Contact インスタンスに逆シリアル化します。その後、各連絡先の姓名がコンソールに出力されます。
結論
JsonTextReader の SupportMultipleContent 設定を利用すると、大規模で不正な形式の JSON ファイルを効果的に解析できます。 。ネット。この手法により、メモリの効率的な使用が可能になり、複雑な JSON 構造が処理されるため、JSON データ ストリームの処理に最適です。
以上がJson.NET を使用して、.NET で大規模で不正な JSON ファイルを効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。