iOS5以降では、NSJSONSerializationというオブジェクトが実装されており、これを使うとJSON文字列と、Objective-Cのオブジェクトを容易に相互変換できる。NSJSONSerializationに渡すのはNSStringでなくNSDataである点にだけ気をつければ非常に簡単に利用できる。※iOS4.3以前ではNSJSONSerializationは利用できないのでご注意下さい
//文字列をObjective-Cのオブジェクトに変換
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:
[@"[1,2,3,["foo","bar"]]"
dataUsingEncoding:NSUTF8StringEncoding]
options:kNilOptions
error:&error];
NSLog(@"%@ %@", json, error);
//Objective-CのオブジェクトをJSONに変換
NSData *jsonData =
[NSJSONSerialization dataWithJSONObject:json
options:kNilOptions error:&error];
NSLog(@"%@ %@"
,[[NSString alloc]
initWithData:jsonData
encoding:NSUTF8StringEncoding]
,error);
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:
[@"[1,2,3,["foo","bar"]]"
dataUsingEncoding:NSUTF8StringEncoding]
options:kNilOptions
error:&error];
NSLog(@"%@ %@", json, error);
//Objective-CのオブジェクトをJSONに変換
NSData *jsonData =
[NSJSONSerialization dataWithJSONObject:json
options:kNilOptions error:&error];
NSLog(@"%@ %@"
,[[NSString alloc]
initWithData:jsonData
encoding:NSUTF8StringEncoding]
,error);
実行結果
末尾のnullは、エラーが発生しなかったということを表しています。
2012-01-27 16:35:43.813 AppName[22778:fb03] (
1,
2,
3,
(
foo,
bar
)
) (null)
2012-01-27 16:35:43.815 AppName[22900:fb03] [1,2,3,["foo","bar"]] (null)
1,
2,
3,
(
foo,
bar
)
) (null)
2012-01-27 16:35:43.815 AppName[22900:fb03] [1,2,3,["foo","bar"]] (null)