Hotpepper API のデータを使って、Androidで飲食店検索アプリを作りました。
その際の手順をまとめておきます。
リクルートWebサービスにユーザー登録する
- 上記サイトの「新規登録」ボタンをクリック
- 画面の手順に従ってメアドを入力し、ユーザー登録
- リクルートWebサービスからAPIキーが記載されたEメールが届く。
店舗データのリクエスト
例えば、御茶ノ水周辺の飲食店をJSON形式で出力する場合は下記のようになる
http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=(取得したAPIキー)&format=json&keyword=御茶ノ水
※ 上記の(...)の部分には取得したAPIキーを入れてください
出力されたデータ内容
例えば以下のようなデータが出力されます
{
"results": {
"results_start": 1,
"results_returned": "10",
"api_version": "1.26",
"shop": [{
"name_kana": "ふくのや",
"other_memo": "※不明点等、お気軽に店舗へご相談下さい!!",
"photo": {
"mobile": {
"l": "http://imgfp.hotp.jp/IMGH/44/34/P019604434/P019604434_168.jpg",
"s": "http://imgfp.hotp.jp/IMGH/44/34/P019604434/P019604434_100.jpg"
},
"pc": {
"l": "http://imgfp.hotp.jp/IMGH/44/34/P019604434/P019604434_238.jpg",
"m": "http://imgfp.hotp.jp/IMGH/44/34/P019604434/P019604434_168.jpg",
"s": "http://imgfp.hotp.jp/IMGH/44/34/P019604434/P019604434_58_s.jpg"
}
},
"large_area": {
"name": "東京",
"code": "Z011"
},
"sommelier": "いない",
"party_capacity": "30",
"large_service_area": {
"name": "関東",
"code": "SS10"
},
"mobile_access": "お茶の水駅30秒、水道橋駅10分、秋葉原駅10分",
"id": "J000011431",
"address": "東京都千代田区神田駿河台2-4-4 サンロイヤルビル5F",
"lng": "139.7638532018",
"course": "あり",
"show": "なし",
"parking": "なし :お酒を飲まれる際はお車でのお越しはご遠慮ください。",
"non_smoking": "一部禁煙 :喫煙席:30席、禁煙席:6席/煙が流出しないように壁があります",
"horigotatsu": "あり :最大30名様OKです",
"name": "福の家",
"genre": {
"name": "居酒屋",
"catch": "お茶の水駅30秒 個室 料理居酒屋",
"code": "G001"
},
"open": "月-金、祝前日: 11:30-14:30 (料理L.O. 14:00 ドリンクL.O. 14:00)17:00-23:30土、日、祝日: 16:00-23:30",
"card": "利用可",
"tatami": "あり :お座敷席もご用意しております。必ず事前にご予約をお願い致します。",
"charter": "貸切可 :50名 ~120名までOKです",
"wifi": "未確認",
"equipment": "なし",
"sub_genre": {
"name": "和食",
"code": "G004"
},
"shop_detail_memo": "各種飲み放題付きコース等をご用意しております。",
"band": "不可",
"middle_area": {
"name": "神田・神保町・秋葉原・御茶ノ水",
"code": "Y020"
},
"lat": "35.6994648121",
"karaoke": "なし",
"logo_image": "http://imgfp.hotp.jp/IMGH/29/51/P000982951/P000982951_69.jpg",
"midnight": "営業している",
"budget": {
"average": "(宴会・通常平均)3000円~4000円/(ランチ)800円",
"name": "3001~4000円",
"code": "B003"
},
"urls": {
"qr": "http://webservice.recruit.co.jp/common/qr?url=http%3A%2F%2Fhpr.jp%2FstrJ000011431%2F%3Fuid%3DNULLGWDOCOMO%26vos%3Dhpp337",
"mobile": "http://hpr.jp/strJ000011431/?uid=NULLGWDOCOMO&vos=hpp336",
"pc": "http://www.hotpepper.jp/strJ000011431/?vos=nhppalsa000016"
}
...以下略
データをparseする
Androidアプリの場合、parseの方法は下記サイトにまとめられています。
http://tkm0on.hatenablog.com/entry/2015/05/21/183608
Hotpepper APIからデータをparseしたい場合は、下記のようになります。
private List<MessageRecord> parse(JSONObject json) throws JSONException {
ArrayList<MessageRecord> records = new ArrayList<MessageRecord>();
JSONArray jsonMessages = json.getJSONObject("results").getJSONArray("shop");
for (int i =0; i < jsonMessages.length(); i++) {
JSONObject jsonMessage = jsonMessages.getJSONObject(i);
String url = jsonMessage.getJSONObject("photo").getJSONObject("mobile").getString("l"); //画像
String title = jsonMessage.getString("name"); //店名
String content1 = jsonMessage.getJSONObject("genre").getString("catch"); //キャッチコピー
String content2 = jsonMessage.getString("access"); //アクセス
String content3 = jsonMessage.getString("open"); //営業時間
String content4 = jsonMessage.getJSONObject("budget").getString("average"); //予算(平均)
String shopUrl = jsonMessage.getJSONObject("urls").getString("pc"); //webサイト
Double shopAddressLng = Double.valueOf(jsonMessage.getString("lng")); //緯度
Double shopAddressLat = Double.valueOf(jsonMessage.getString("lat")); //経度
MessageRecord record = new MessageRecord(url, title, shopUrl, shopAddressLng, shopAddressLat, i);
records.add(record);
}
return records;
}
以上