JsonPullParserのJsonModelを取得するVolleyのRequestをつくってみました。
Volleyとは?
Google I/O 2013で発表されたすごいAndroidの通信ライブラリ。どうすごいかは以下のリンクが参考になります。
Google I/O 2013 – Volley: Easy, Fast Networking for Android
Y.A.Mの雑記帳: Google I/O 2013 – Volley: Easy, Fast Networking for Android
JsonPullParserとは?
JSONとPOJOを相互変換するライブラリです。APTの仕組みを利用しています。
https://github.com/vvakame/JsonPullParser
つくったもの
https://github.com/fly1tkg/volley-jpp-request
使い方
Volleyと上記のレポジトリのjarにパスをとおして、あとはこんな感じです。
mQueueRequest = Volley.newRequestQueue(this);
mQueueRequest.add(new JsonModelRequest<Sample, SampleGen>(JSON_URL, new Listener<Sample>() {
@Override
public void onResponse(Sample sample) {
mJsonTextView.setText(sample.toString());
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}));
パフォーマンスとか
このライブラリは内部でリフレクションを利用しているので、若干パフォーマンスが悪いです。(気になるレベルでは無いと思いますが)
リフレクションを利用した理由としてJPPでinterfaceのimplementやクラス継承が使われておらず、Genクラスのget(string json)メソッドを呼び出しつつ、ジェネリクスを利用した柔軟なクラスを作れなかったからです。JPPのアプローチから言うと、おそらくマーカーアノテーションで指定したJsonModelに対して、VolleyのRequestをAPTで生成するというアプローチがよいと思うのですが、、、、めんどくさかったんです、、、。
ジェネリクスからリフレクションを利用する方法として、黒魔術ですが、Java変態文法最速マスターの4を利用しました。