LoginSignup
9
8

More than 5 years have passed since last update.

Androidアプリで Hotpepper API を使う

Last updated at Posted at 2016-05-17

Hotpepper API のデータを使って、Androidで飲食店検索アプリを作りました。
その際の手順をまとめておきます。

リクルートWebサービスにユーザー登録する

  1. 上記サイトの「新規登録」ボタンをクリック
  2. 画面の手順に従ってメアドを入力し、ユーザー登録
  3. リクルート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;
}

以上

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8