SBJson をダウンロードしてくる。
とりあえず Google 先生に iPhone で使える JSON のフレームワークを聞いてみると、どうも json-framework というものが多く使われているらしい。(そう言えば、AdMob のライブラリに入ってた気がする。と、思ったら昔入ってたのは TouchJSON だった。)
で、調べてみるとこの json-framework という名前は古くて、今は SBJson という名前だそうで github からダウンロードできる。
github のページを見ると最新版は 3.1alpha3 だそうだ。ん? alpha3?う〜ん、ちょっと alpha は微妙だな。
というわけで、今回は stable となってる 3.0.4 をダウンロードしました。
Version 3.0 と 3.1 の違いは ARC サポートだそうです。今回 JSON を使いたいプロジェクトは ARC を使ってないのでちょうど良かった!
SBJson で実際にパースをしてみる
コード内で SBJson を使ってパースするには、SBJson.h をインポートして、パーサを作ってパースをするだけです。
こんな感じで使えます。(Mac の Web共有をオンにして自分で作った JSON データ(jsonReplySample.json)を読み込んでパースしてコンソールに表示しています。)
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.11.3/~paraches/jsonReplySample.json"]]; NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease]; NSDictionary *jsonDic = [parser objectWithData: jsonData]; NSLog(@"JSON dictionary=%@", [jsonDic description]);
古いバージョンでは一度データを NSString にしてからパースしていたらしいですが、バージョン 3 からはパーサに NSData のままデータを渡すことが可能です。ただし、UTF-8でエンコードされている必要があります。