Objective-CでJSONを扱う.NSJSONSerialization編
iOS5以降はTwitter統合の関係上NSJSONSerializationクラスが追加されたのでJSONがぐっと楽に扱えるようになった.
以下のコードはInstagramにアクセスしたときに書いた実験用のコードの一部.
NSString *url = @"SOME_URL"; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]]; NSData *jsonData = [NSURLConnectionsendSynchronousRequest:request returningResponse:nil error:nil]; NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil]; if (!dictionary) { NSLog(@"error"); }else{ NSArray *datas = [dictionary objectForKey:@"KEY"]; for (NSDictionary *data in datas) { NSLog(@"%@", [data objectForKey:@"KEY"]); //Do something ... } }
今回は同期リクエスト(NSURLConnectionsendSynchronousRequest)を使っているのでレスポンスが帰ってくるまでアプリケーション全体の処理が止まってしまう.その点は注意.
JSONの解析結果がNSDictionary形式で返却される. JSONがネストされていた場合,解析結果もネストされている.
datasからKEYをとりだす.for inを使って繰り返し処理をすることが多いんじゃないかな?