.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.20 2012

NSJSONSerialization使ってみた

こんにちわ、花粉症がだいぶ落ち着いてきて一安心なHAYABUSAです。
今年も気づけばもう4月半ば、早いもんですね~。

今回はiOS5から追加されたJSON用クラスのNSJSONSerializationを試してみました。

    NSData*    jsonData = /* NSDataにしたJSONのデータ */;
    NSError*   error = nil;
    id         jsonObj = nil;
    
    //① NSData -> JSON Object
    jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
    NSLog(@"jsonObj: %@", jsonObj);
    
    if( [NSJSONSerialization isValidJSONObject:jsonObj] ){    //JSON ObjectをNSDataへ変換可能かどうかをチェック
        //② JSON Object -> NSData
        jsonData = [NSJSONSerialization dataWithJSONObject:jsonObj options:NSJSONWritingPrettyPrinted error:&error];
        NSLog(@"jsonData string: %@", [[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] autorelease]);
    }
①では、
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error
メソッドで、NSDataにしたJSONデータを食わせてJSONオブジェクトへコンバートしています。
jsonObjはNSArray/NSDictionaryのどちらかが返ってきますが、これは元JSONの内容次第。

optionsのパラメータは以下の三種類あります。
NSJSONReadingMutableContainers
NSJSONReadingMutableLeaves
NSJSONReadingAllowFragments
NSJSONReadingMutableContainersだと、返ってきたjsonObjがmutableで、変更可能なのを確認しました。
他二つだとimmutableなようです。
んでヘッダのコメント見たらNSJSONReadingMutableLeavesはmutableなNSStringがどうたら…なニュアンスだったので、文字列のValueを変更しようと試してみたんですが、immutableで堕ちちゃいました。。
うーん、まだ詳細が分からないっす。
ちなみに、元JSON内のValueにnullが入ってたらNSNullオブジェクトとしてセットされてました。

②では、
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error
メソッドで、①で作ったJSONオブジェクトをそのままNSDataへ戻してます。
これのoptionsはNSJSONWritingPrettyPrintedの一択でした。

今まではサードパーティのJSONFrameworkとかを使ってましたが、ほぼ同じ感覚でいけます。
JSONFrameworkも使いやすかったですが、やっぱ純正がいいですよね^^;
Foundation.frameworkの中に入ってるのもGoodです^^
次はSQLite辺りのヘルパーも作って欲しいですね~。
関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/227-659de4c9

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。