JSONとオブジェクトを相互変換


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);

実行結果

末尾の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)

Comments

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です