NSJSONSerializationの簡単な使い方

NSJSONSerialization のリファレンスを見るとわかるけどクラスメソッドが全部で5つあるだけ!
JSON オブジェクトを作る方法が2つ、JSON データを作る方法が2つ。それぞれストリームおよびデータを使う方法がある。
そして最後の1つは JSON オブジェクトを JSON データに変換できるかどうかを確認してくれる。


昨日のコードを NSJSONSerialization で書き直すとこんな感じ。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.11.3/jsonReplySample.json"]];
NSData *json_data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSError *error=nil;
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:json_data options:NSJSONReadingAllowFragments error:&error];
NSLog(@"jsonObject = %@", [jsonObject description]);

JSON データを JSON オブジェクトにするので JSONObjectwithData:options:error: を使ってる。
JSONObjectwithData:options:error: はその名の通り NSData から直接 JSON のオブジェクトを作ってくれる。
option には次の3つを指定できる。

  • NSJSONReadingMutableContainers
  • NSJSONReadingMutableLeaves
  • NSJSONReadingAllowFragments

今回は出来上がった JSON のオブジェクトに何かを付け加えたり削除したりはしないので、Mutable でない NSJSONReadingAllowFragments で OK。
超簡単!

というわけで、iOS 5 以降のサポートで良ければ NSJSONSerialization を使うのが、将来の iOS のバージョンアップなんかを考えた時には良いかな。