Web API が返す JSON をパースするライブラリの定番は JSONKit みたいだけど、iOS5 から標準で NSJSONSerialization っていうクラスが提供されているので、こちらを使うことにする。
まずは練習として JSON 文字列をパースして NSArray に変換してみた。
// JSON 文字列 NSString *jsonString = @"[{\"title\":\"RDocを記述する\", \"content\":\"RDocを記述する\"}, {\"title\":\"組み込んで使えるようにする\", \"content\":\"組み込んで使えるようにする\"}]"; // JSON 文字列をそのまま NSJSONSerialization に渡せないので、 // NSData に変換する NSData *jsonData = [jsonString dataUsingEncoding:NSUnicodeStringEncoding]; // JSON を NSArray に変換する NSError *error; NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error]; // JSON のオブジェクトは NSDictionary に変換されている NSMutableArray *results = [[NSMutableArray alloc] init]; for (NSDictionary *obj in array) { Entry *entry = [[Entry alloc] init]; entry.title = [obj objectForKey:@"title"]; entry.content = [obj objectForKey:@"content"]; [results addObject:entry]; }
今作っているアプリはビューアなので、JSON を NSArray や NSDictinary に変換できれば十分。
ちなみに、Entry はこのサンプル用に適当に定義したクラス。
@interface Entry : NSObject @property (nonatomic) NSString *title; @property (nonatomic) NSString *content; @end
2014/02/15
- サンプルコードの typo を修正
- Entry の定義を追加