こんにちは、Androidエンジニアの梅津です。
普段業務で使っているJSONのパースライブラリ、「JsonPullParser」の紹介をすることにしました。
他にも似たライブラリとしてGsonやJacksonなどがありますが、僕はJsonPullParserを好んで使っています。
JsonPullParserはライブラリ自体が軽量だったり、JSONの対応付けの際にリフレクションを使わないためProGuardに強いというところが嬉しいですね。
導入方法
まずはaptを使用するためにpluginを入れます。
続いてJsonPullParserを読み込みます
gradleファイルを同期すれば準備完了です。
JSONのモデルクラスを用意する
今回使うJSONは https://api.github.com/users/umetsu/repos から取ってきます。
中を見ると以下のようになっています。
[{"id": 20613486,"name": "AndEngineSampleOnGroovy","owner": {"login": "umetsu","id": 4004120,},... 省略},{... 省略}]
このJSONを対応付けるためのモデルクラスを作成しましょう。
モデルクラスには@JsonModelというアノテーションをつけます。
フィールドのゲッターとセッターも忘れずに用意しましょう。
もとのJSONを見るとオブジェクトの中に owner というオブジェクトが入っています。
オブジェクトが入れ子になっている時は、入れ子になっているオブジェクトに対応するクラスも用意します。
こちらでは decamelize というオプションが出てきました。
このオプションが false の時はモデルクラスのフィールド名も avatar_url としなければいけません。
モデルクラスの作成はこれで完了です。
JSONとモデルクラスの対応付け
ここまでの段階で一度ビルドしておきましょう。
するとRepositoryGenというクラスが自動的に作られています。
JSONとの対応付けには、この自動生成されたクラスを使用します。
GithubService#loadRepositoriesResponseというメソッドでJSONを取得します。
取得したJSONをRepositoryGenクラスに渡します。
今回のJSONは配列( [] )で始まっているため、RepositoryGen#getListメソッドを使用してRepositoryクラスのリストを返してもらうようにします。
RepositoryGen#getというメソッドもあります。こちらはJSONがオブジェクト( {} )から始まっている場合に使用します。
これでJSONとモデルクラスの対応付けは完了です。
とても簡単ですね。
対応付けしたRepositoryクラスのリストをListViewで表示してみました。
リポジトリの名前やオーナーの名前が取得できているのが確認できます。
以上でJsonPullParserの紹介は終わりです。
お疲れさまでした。