19 KiB
19 KiB
title | author | date | url | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|---|
rfc.jsonを使ってみる | kazu634 | 2010-12-23 | /2010/12/23/_1644/ |
|
|
Gauche の新機能検証をしているように見えますが、単純に Foursquare API を利用するスクリプトを作っているんです。たまたま最新バージョンで HTTPS 接続や、 json が利用出来るようになっているだけでして。。。
rfc.json、使い方はとても簡単でした:
gosh> (use rfc.json) #<undef> gosh> (receive (status header body) (http-get "api.foursquare.com" (string-append "/v2/users/self/checkins?oauth_token=" "私の oauth_token" "&limit=3") :secure #t) (parse-json-string body)) (("meta" ("code" . 200)) ("response" ("checkins" ("count" . 1963) ("items" . #((("id" . "4d12f47c37f1236aaafd7d1b") ("createdAt" . 1293087868) ("type" . "checkin") ("shout" . "勉強してます。") ("isMayor" . true) ("venue" ("id" . "4c131b17b7b9c9280320a937") ("name" . "STICK SWEETS FACTORY サクラス戸塚店") ("contact" ("phone" . "0458654511")) ("location" ("address" . "戸塚町4253-1") ("city" . "横浜市戸塚区") ("state" . "神奈川県") ("postalCode" . "244-0003") ("lat" . 35.40073452467999) ("lng" . 139.53113079071045)) ("categories" . #((("id" . "4bf58dd8d48988d16d941735") ("name" . "Café") ("icon" . "http://foursquare.com/img/categories/food/cafe.png") ("parents" . #("Food")) ("primary" . true)))) ("verified" . false) ("stats" ("checkinsCount" . 32) ("usersCount" . 4)) ("todos" ("count" . )))) (("id" . "4d12d45c2e5837042a87e7d1") ("createdAt" . 1293079644) ("type" . "checkin") ("isMayor" . true) ("venue" ("id" . "4b497967f964a520497026e3") ("name" . "有隣堂 戸塚モディ店") ("contact" ("phone" . "0458812661")) ("location" ("address" . "戸塚町10") ("crossStreet" . "戸塚モディ 4階") ("city" . "横浜市戸塚区") ("state" . "神奈川県") ("postalCode" . "244-0003") ("lat" . 35.40139479158353) ("lng" . 139.5345962047577)) ("categories" . #((("id" . "4bf58dd8d48988d114951735") ("name" . "Bookstore") ("icon" . "http://foursquare.com/img/categories/shops/bookstore.png") ("parents" . #("Shops")) ("primary" . true)))) ("verified" . false) ("stats" ("checkinsCount" . 202) ("usersCount" . 47)) ("todos" ("count" . )))) (("id" . "4d11f486d1848cfa79f1b771") ("createdAt" . 1293022342) ("type" . "checkin") ("venue" ("id" . "4b0e60adf964a520305723e3") ("name" . "品川駅 (Shinagawa Sta.)") ("contact") ("location" ("address" . "高輪3 / 港南2") ("city" . "港区") ("state" . "東京都") ("lat" . 35.62866325853653) ("lng" . 139.73909854888916)) ("categories" . #((("id" . "4bf58dd8d48988d129951735") ("name" . "Train Station") ("icon" . "http://foursquare.com/img/categories/travel/trainstation.png") ("parents" . #("Travel")) ("primary" . true)) (("id" . "4bf58dd8d48988d1fd931735") ("name" . "Subway") ("icon" . "http://foursquare.com/img/categories/travel/subway.png") ("parents" . #("Travel"))))) ("verified" . false) ("stats" ("checkinsCount" . 48244) ("usersCount" . 9210)) ("todos" ("count" . )))))))))
XMLの場合だと、 XPATH を指定することで簡単に任意の場所からのS式を切り出せたけど、この場合は自分で切り出すしか無いのかな?こんな感じかな?
(assoc "items" (assoc "checkins" (assoc "response" *json-response*)))
面倒くさい気がする。