0

ストリーミングして解析する必要がある非常に大きな 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" と末尾の括弧を削除することです。これはひどい方法です。

これに対するより良いアプローチはありますか?

残念ながら、ソースを変更することはできず、これで作業する必要があります。

ありがとう!ダニエル

4

1 に答える 1