Objective-CのJSON Frameworkを使ってTwitterの情報等を取得する方法
Google CodeでObjective-C用のJSON Frameworkが公開されているので、これを使ってTwitter等のJSONフィードを利用する方法をメモしておく(以下の内容は基本的にスタンフォード大学のiPhoneアプリ開発講座で学んだ事である)。
なお、上記のフレームワークのインストール方法、基本的な使用方法に関しては、以下のブログに詳しく書かれている。
- [iPhone] JSON Framework の使い方(準備編) | Sun Limited Mt.
- [iPhone] JSON Framework の使い方(解析編) | Sun Limited Mt.
ステップ1: TwitterのAPIドキュメントから取得したいJSON情報のURLを調べる
まずTwitterの情報を取得してくる場合であるが、例えばあるユーザのつぶやきをJSONフォーマットで取得する場合、以下のようなURLで取得する事が可能である(ユーザtomuteのつぶやきを取得する場合)。
参照:http://apiwiki.twitter.com/Twitter-API-Documentation
http://twitter.com/statuses/user_timeline/tomute.json
ステップ2: JSONフレームワークを利用してJSON情報を利用する
取得したいJSON情報のURLが分かったら、以下のようなコードでJSON情報の取得、及び解析が可能である。
NSString *urlString = @"http://twitter.com/statuses/user_timeline/tomute.json"; NSURL *url = [NSURL URLWithString:urlString]; NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; // JSONフレームワークによってNSStringクラスの拡張が行われており、 // JSONValueというメソッドが追加されている。このメソッドを呼ぶ事で // JSON情報のパースが行われる。 NSArray *jsonArray = [jsonString JSONValue]; for (NSDictionary *dic in jsonArray) { // つぶやきとつぶやいた時刻をダンプ NSLog([dic objectForKey:@"text"]); NSLog([dic objectForKey:@"created_at"]); }
注意するポイントとしては、JSONValueメソッドの戻り値は、NSArrayではなくNSDictionaryの事もあり、これはJSONの内容に依存するという点である。例えば、http://twitter.com/users/show/tomute.jsonというURLだと、指定したユーザの情報を取得する事が出来るのだが、こちらの場合にはNSDictionaryが返って来る。
なお、Twitterの情報ではなくFlickrの写真を取得したい場合には、基本的には上記のURL指定箇所を変更するだけで良い。例えば特定のタグが振られた写真を取得する場合には、以下のようなURLを指定する。
http://api.flickr.com/services/rest/?method=flickr.photos.search& api_key=@"APIKEY"&tags=@"Trip"&per_page=10&format=json&nojsoncallback=1
【おまけ】
英語のブログであるが、以下のブログにはこのJSON Frameworkを使う方法がより詳しく書かれてる。