ファイルはjsonの約70GBなので、GsonストリーミングAPIを使用してWikidata JSON dumpを解析しようとしています。次のようにファイルの全体的な構造は以下の通りである:JSONフィールドの値に応じてさまざまな種類のオブジェクトを持つGsonストリーミングAPI
[
{"type":"item",... other fields ...},
{"type":"property",... other fields ...},
.....
]
それは各オブジェクトタイプitem
又はproperty
とすることができると私は別のクラスをインスタンス化したいと考えているオブジェクトの配列である(すなわち、Iは、該当する項目が私のJavaコードのPropertyクラス)を、私が遭遇するオブジェクトに応じて選択します。
基本的には、type
フィールドを見て、それに応じて次のJSONを解析したいと考えています。 JsonReaderはgetNextJsonObject()
または同様の機能を提供していないようですので、ファイル全体を前処理して別のものに分割する以外にもこれを行う方法はありますか?このファイルは非常に大きいので、私はその場ですべてを行うことができる余分な前処理ステップを避けたいと思っています。
次は何が起こるのかを示すpeek()にアクセスする必要があります。 – Savior
'peek()'を行う方法は見つけられませんでした。なぜなら、 'type'フィールドを見つけてその時点で私はすでにJSONオブジェクトの中に入っていて、戻ることができないからです。 –
Canあなたが '型式 'を見てしまうまで何かをインスタンス化するのをやめていますか? – Savior