ぐるなびのwebサービスを使った解説も最後かもしれない。
今回は、お店の情報を取得する方法について
<cfparam name="requrl" default="http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=取得したAPIキー"> <cfparam name="hit_per_page" default=500> <cfparam name="ret" default=""> <cfset store="和民"> <cfset requrl = requrl&"&hit_per_page="&hit_per_page> <cfset requrl = requrl&"&name="&URLEncodedFormat(store,"utf-8")> <cfhttp url="#requrl#" method="get"/> <cfoutput>var data ="";</cfoutput> <!--- xmlの解析 ---> <cfset ret = XmlParse(cfhttp.fileContent)> <!--- 問合わせがエラーを返した場合 ---> <cfif XmlChildPos(ret,"gnavi",1) neq -1> <!--- コードの値を取得 ---> <cfset retCode = ret.gnavi.error.code.xmlText> <cfoutput> <!--- コードが600の場合、呼び出し元に検索結果(0件)を返す ---> <cfif retCode eq "600"> data = {"error":null,"total":0}; <!--- エラーコードを返す ---> <cfelse> data = {"error":"#ret.gnavi.error.code.xmlText#"}; </cfif> </cfoutput> <!--- 問合わせ結果が、正常な場合 ---> <cfelse> <!--- 検索結果の合計数 ---> <cfset TotalCnt = ret.response.total_hit_count.XmlText> <!--- responseタグまで取得 ---> <cfset Response = ret.response> <!--- JSON形式でリターン ---> <cfoutput> date = { "error":null <!--- 検索結果の合計数 ---> , "total":#totalCnt# <cfloop index="i" from="1" to="#totalCnt#"> <cfset Ret_rest = Response.rest[i]> , #i#:{ <!--- 店舗ID ---> "id":"#Ret_rest.id.XmlText#" <!--- 店舗名 ---> , "name":"#Ret_rest.name.XmlText#" <!--- PCサイトURL ---> , "url":"#Ret_rest.url.XmlText#" <!--- 店舗画像画像1がある場合 ---> <cfif Ret_rest.image_url.shop_image1.XmlText neq ""> <!--- 店舗画像画像1のURL ---> , "shop_image1":"#Ret_rest.image_url.shop_image1.XmlText#" <!--- 店舗画像画像1がない場合 ---> <cfelse> , "shop_image1":null </cfif> <!--- 店舗画像画像2がある場合 ---> <cfif Ret_rest.image_url.shop_image2.XmlText neq ""> <!--- 店舗画像画像2のURL ---> , "shop_image2":"#Ret_rest.image_url.shop_image2.XmlText#" <!--- 店舗画像画像2がない場合 ---> <cfelse> , "shop_image2":null </cfif> <!--- QRコード画像のURLがある場合 ---> <cfif Ret_rest.image_url.qrcode.XmlText neq ""> <!--- QRコード画像のURL ---> , "qrcode":"#Ret_rest.image_url.qrcode.XmlText#" <!--- QRコード画像のURLがない場合 ---> <cfelse> , "qrcode":null </cfif> <!--- 住所 ---> , "address":"#Ret_rest.address.XmlText#" <!--- 電話番号 ---> , "tel":"#Ret_rest.tel.XmlText#" <!--- 緯度(度分秒十進数) ---> , "latitude":#Ret_rest.latitude.XmlText# <!--- 経度(度分秒十進数) ---> , "longitude":#Ret_rest.longitude.XmlText# } </cfloop> }; </cfoutput> </cfif> |
全部ではないのですが、JSON形式でお店の情報を返すようにしました。
返り値に、経度と緯度も追加しました。
evalをかけたあと、これを使ってgoogle mapで表示するのもいいかなと思い。
今回キーとなったのは、エラーがおきたときのタグの構成がちょい違うところ。
なので、でかいif文で、エラーかどうか確認しないといけないんですよねー。
とりあえず形になったと思います。
時間があったら、coldfusionを使ったJSON形式で返すプログラムを公開しよっかなー。
0 コメント:
コメントを投稿