ホームページ > Java > &#&チュートリアル > Jackson のストリーミングとツリーモデル解析は、どのようにして大きな JSON ファイルを最適に処理できるのでしょうか?

Jackson のストリーミングとツリーモデル解析は、どのようにして大きな JSON ファイルを最適に処理できるのでしょうか?

Susan Sarandon
リリース: 2024-11-26 04:31:12
オリジナル
863 人が閲覧しました

How Can Jackson's Streaming and Tree-Model Parsing Optimally Handle Large JSON Files?

Jackson API を使用して大規模な JSON ファイルを解析するための最適なアプローチ

Blizzard Entertainment が提供する大規模なオークション データなどの広範な JSON ファイルを解析しようとすると、最も効率的な戦略が重要です。行ごとの解析やファイル分割などの従来のアプローチは、このような大量のデータ セットには効果がないことが判明しています。

Jackson JSON 処理ライブラリは、例外的なソリューションとして登場します。 Jackson はストリーミングとツリーモデル解析をシームレスにマージし、ストリーミング方式でファイル全体を効率的に走査できると同時に、ツリー構造として個々のオブジェクトにアクセスできるようにします。

Jackson によるストリーミングとツリーモデル解析:

次の JSON を考えてみましょう。ファイル:

{
  "records": [
    {"field1": "aaaaa", "bbbb": "ccccc"},
    {"field2": "aaa", "bbb": "ccc"}
  ],
  "special message": "hello, world!"
}
ログイン後にコピー

Jackson のストリーミングおよびツリーモデル解析戦略により、次のことが可能になります:

  • ストリームとしてファイルを移動: ファイル内を次のように移動します。完全にメモリにロードすることなく、イベントごとに全体を読み取ります。
  • 読み取り個々のオブジェクトをツリーに変換: ストリームから特定のオブジェクトを抽出し、ツリー構造として表し、そのデータへのランダム アクセスを提供します。

コード サンプル:

import org.codehaus.jackson.map.*;
import org.codehaus.jackson.*;
import java.io.File;

public class ParseJsonSample {
    public static void main(String[] args) throws Exception {
        JsonFactory f = new MappingJsonFactory();
        JsonParser jp = f.createJsonParser(new File(args[0]));
        JsonToken current;

        while (current != JsonToken.END_OBJECT) {
            String fieldName = jp.getCurrentName();
            current = jp.nextToken();
            if (fieldName.equals("records")) {
                JsonNode node;
                while (current != JsonToken.END_ARRAY) {
                    node = jp.readValueAsTree();
                    System.out.println("field1: " + node.get("field1").getValueAsText());
                    System.out.println("field2: " + node.get("field2").getValueAsText());
                }
            } else {
                jp.skipChildren();
            }
        }
    }
}
ログイン後にコピー

このコードは、Jackson のストリーミング機能とツリーモデル解析機能を組み合わせた機能を効果的に示しています。メモリ使用量を最小限に抑えながら、大きな JSON ファイルを読み取り、特定の情報 (「フィールド 1」や「フィールド 2」の値など) を解析してツリー構造にし、そのデータへのランダム アクセスを提供します。

以上がJackson のストリーミングとツリーモデル解析は、どのようにして大きな JSON ファイルを最適に処理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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