OSMサーバーからjsonファイルを解析したいと思います。数Kbsから10-20Mbsまで変化する可能性があります。私は現在GSONを使用していますが、大きなファイル(10 Mbsのようなもの)を解析する際のパフォーマンス上の問題に直面しています。ストリーミングモードでの解析にのみ約10秒かかります。Javaが大きなjsonを解析する
JsonReader reader = new JsonReader(new StringReader(data));
try {
reader.beginObject();
while(reader.hasNext()){
String name = reader.nextName();
if(name.equals("elements")){
reader.beginArray();
while(reader.hasNext()){
String type = null;
Long id = 0L;
Double lat = 0D;
Double lon = 0D;
ArrayList<Long> nodes = new ArrayList<>();
Tags tags = null;
reader.beginObject();
while(reader.hasNext()) {
name = reader.nextName();
switch (name) {
case "type":
type = reader.nextString();
break;
case "tags":
reader.beginObject();
while (reader.hasNext()) {
name = reader.nextName();
if (name.equals("highway"))
tags = new Tags(reader.nextString());
else
reader.skipValue();
}
reader.endObject();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
}
reader.endArray();
}
else{
reader.skipValue();
}
}
reader.endObject();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
今のところ私のアプリケーションのボトルネックです。私は既にいくつかの他のライブラリを試しましたが、改善はありませんでした。私が間違っていることや、大きなjsonデータを解析する特別な方法がありますか?
あなたが達成しようとしていることを教えてください。より良い方法があるかもしれません。 JSで生のOSMデータを解析するのは間違っている。 – scai
JSはJSではありません。私は与えられた分野でOSMから道のタイプと他の基本的なデータを得たいと思っています。 – KamCho