ストリーミングして解析する必要がある非常に大きな Json があります。ソースは次のようになります。
{
"Report_Entry": [{
"FirstName": "Brett",
"Position": "13_Delta Corp",
"Worker": "Mr Battles"
},
{
"FirstName": "Dan",
"Position": "13_Delta Corp",
"Worker": "Mr Brown"
}]
}
私はこのようなことをしたいと思います:
InputStream inStream = null;
JsonReader reader = null;
Gson gson = null;
gson = new Gson();
inStream = new FileInputStream("C:\\Downloads\\largereportdata.json");
reader = new JsonReader(new InputStreamReader(inStream, "UTF-8"));
List<Message> messages = new ArrayList<Message>();
reader.beginArray();
while (reader.hasNext()) {
Message message = gson.fromJson(reader, Message.class);
//Process the message
}
reader.endArray();
reader.close();
class Message{
public String First_Name = null;
public String Position = null;
public String Worker = null;
}
配列の親jsonオブジェクトにgson.fromJsonを使用すると、オブジェクト全体が配列を含む1つのオブジェクトにロードされますが、配列をストリーミングしたいと思います。
私が今見ている唯一の方法は、何らかの方法で入力を編集し、親の "Report_Entry" と末尾の括弧を削除することです。これはひどい方法です。
これに対するより良いアプローチはありますか?
残念ながら、ソースを変更することはできず、これで作業する必要があります。
ありがとう!ダニエル