ホームページ > バックエンド開発 > C++ > .NET で JSON.NET を使用して大きな無効な JSON ファイルを解析するにはどうすればよいですか?

.NET で JSON.NET を使用して大きな無効な JSON ファイルを解析するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-06 04:19:39
オリジナル
1000 人が閲覧しました

How to Parse Large, Invalid JSON Files in .NET with JSON.NET?

JSON.NET を使用した .NET での大きな無効な JSON ファイルの解析

この記事では、無効な構文や不正な構文が含まれる可能性のある大きな JSON ファイルを解析するという課題に取り組みます。特定の形式は Json.NET でネイティブにサポートされていません。

この問題は、JSON データが次のもので構成されている場合に発生します。複数の配列を 1 つの配列内でネストするのではなく、閉じ括弧と開き括弧で区切ります。標準の JSON 構文からの逸脱により、Json.NET の組み込み逆シリアル化メソッドで問題が発生する可能性があります。

Json.NET と無効な JSON データ

最初は、JsonConvert.DeserializeObject を使用して大きな JSON ファイルを解析すると、データがメモリ制限を超えると例外が発生します。同様に、JArray に直接逆シリアル化しようとすると、エラーが発生する可能性があります。

解析の問題の解決

このシナリオを効果的に処理するために、JsonTextReader を含むカスタマイズされたアプローチを利用します。 SupportMultipleContent フラグを true に設定すると、リーダーは無効な JSON 形式を認識し、各配列を個別のコンテンツ セクションとして扱うことができます。

無効な JSON データの解析

次の C# コードは、次の方法を示しています。この手法を実装します:

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.NET 解析メソッドで発生するメモリと構文の制限を効果的に克服します。

以上が.NET で JSON.NET を使用して大きな無効な JSON ファイルを解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート