Androidでvolleyとgsonを使いJSON-LDのデータを取得

はじめに

metro_anim

今回東京メトロオープンデータ活用コンテストで前回下記記事で紹介した、Androidアプリがgoodデザイン賞を受賞しました!!ありがとうございます!

海外で人気のフレームワーク”libGDX”を使って、Androidでアニメーション作ってみた

私は上記で紹介しているTOPのアニメーション部分を担当しましたが、全体的には結構な人数が関わっていて、皆さんが頑張った成果だと思います!

受賞作品一覧はこちら

紹介動画はこちら

この記事では、前回紹介したアニメーションを表示するために、もちろんオープンデータのAPIを利用して、データを取ってきているので、その辺りを書きたいと思います。

メトロのオープンデータAPIからデータ取得 

※タイトルにも有るように、volleygsonを使っています、Androidのライブラリとして超有名なので、特に説明はいらないかと思います、知りたい方は申し訳ありませんがググって下さい。 

このアプリでは、現在走行中の列車数を取得して、アニメーションを表示しています、取得に下記クラスを実装しています。

 このクラスをインスタンス化してrunメソッドを呼べば、現在の全路線情報を取得してくれます、1路線の取得が完了する度にコールバックでデータが渡されるようになっています。

ここで注意なのは、一気に9路線分リクエストすると、リクエスト数の制限に引っかかってしまうので、遅延させながら取得しています。そんな事情もあり、画面上に表示される時は徐々に表示されていく形を取っています。

このクラスを使うActivityでは5分毎にrunメソッドを呼ぶようにして表示を更新しています。

 

上記クラスの中でTrainRequestというクラスを使っています、これはVolleyで指定のurlにリクエストを行い、gsonでデータをパースしています、ソースコードもテンプレのようなもので、特別なことはしていません。

リクエストが終わったらgsonでTrainDataクラスにデータを格納しますが、オープンデータのレスポンスがJSON-LDなため、SerializedNameを使って、下記のような対応が必要でした。

 実際の1列車情報のjsonは下記のようなデータで、列車数分が配列になって来ます。

 このような実装を行うことで、オープンデータAPIから値を取得し利用することが可能になります!

■最後に

やはりリクエストやパース処理を楽に実装出来たり、可読性を上げることができるのでこれらライブラリは本当に有用です。あとは、中身がなにやってるかは理解した上で利用できるともっと良いですね。

●この記事を書いた人