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 サイトの他の関連記事を参照してください。