このメモはSBJson frameworksに関するもの。
記述時点での正式リリースバージョン3.0.4
参考:http://stig.github.com/json-framework/api/3.0/
ARC適用する場合は3.1α以降でなければ動作しない。
http://ip7.biz/wordpress/?p=1008
導入手順
- ターミナルを立ち上げる
- gitから入手すべく以下を入力してENTER
-
git clone git://github.com/stig/json-framework.git
- DLしたファイルを解凍し、解凍したファイル下のClassフォルダ内のファイルを自分のプロジェクトフォルダにD&Dしてコピーする。
- もしビルドが通らないのであれば、、Build Phases のCompile SourcesにSBJon関連全ファイル(.m,.h)を追加することでBuildを通す事が出来る。
- この時のエラーメッセージ
_OBJC_CLASS_$_SBJsonParser", referenced from:
- Json形式のファイルを扱うクラス(.m)内で以下を記述
-
#import
- JSON形式のファイルを扱うクラスヘッダ内で以下を記述
-
@class SBJsonStreamParser;
-
@class SBJsonStreamParserAdapter;
テキストファイルから読み込むんでデータ化
テキストファイルから読み込む
//read file NSString* fileName = [NSString stringWithFormat:@"dummyData"]; NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Documents"]; path = [path stringByAppendingPathComponent:fileName]; NSData* data = [NSData dataWithContentsOfFile:path];
読めてなかったら強制終了
if(data == nil) abort();
データを文字列にエンコード
//Data encode to NSString. NSString* dataStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"data = %@",dataStr);
SBJsonでパースする
//SBJson parse to NSDictionary. SBJsonParser* sbjsonparser =[[SBJsonParser alloc]init]; NSError* error; error = nil; NSDictionary* dic = [sbjsonparser objectWithString:dataStr error:&error]; NSLog(@"JSON dictionary=%@", [dic description]);
テスト
読み込んだテキストファイルの中身
{ "buttonArray":[ { "word":"キウイ", "imgPath":"greenButtons_0000s_0003.png" }, { "word":"うみがめ", "imgPath":"redButtons_0000s_0003.png" } ] }
動作確認した際に出た文字列
CoreData[39477:fb03] JSON dictionary={ buttonArray = ( { imgPath = "babylogButtons_0000s_0003.png"; word = "U30adU30a6U30a4"; }, { imgPath = "babylogButtons_0000s_0003.png"; word = "U3044U3061U3054"; } ); }