天天看點

IOS--JSON解析之JSONKit使用

将JSONKit.h和JSONKit.m拖到項目中

下載下傳位址:https://github.com/johnezang/JSONKit/

配置:

//導入JSONKit時候需要特别的配置 (-fno-objc-arc)

//(1)修改JSONKit.m檔案第680行,修改為object_setClass(array, _JKArrayClass);

//(2)修改JSONKit.m檔案第931行,修改為object_setClass(dictionary, _JKDictionaryClass);

下面代碼:

    //string to dictionary

    NSString *resultStr = @"{"name": "admin","list": ["one","two","three"]}";

    NSData* jsonData = [resultStr dataUsingEncoding:NSUTF8StringEncoding];

    NSDictionary *resultDict = [jsonData objectFromJSONData];

    NSLog(@"name is :%@",[resultDict objectForKey:@"name"]);

    NSArray *list = [resultDict objectForKey:@"list"];

    for (NSString *str in list) {

        NSLog(@"list res:%@",str);

    }

    //dicttionary to string

    NSString *jsonStr = [resultDict JSONString];

    NSLog(@"temp is :%@",jsonStr);

為了友善大家看懂在上面的代碼中做了相應更改。

    //建立或者讀取json資料

    NSString *resultStr = @"{"name": "admin","list": ["one","two","three"]}";

    //編碼json資料

    NSData* jsonData = [resultStr dataUsingEncoding:NSUTF8StringEncoding];

    //開始解析json資料

     NSDictionary *resultDict = [jsonData objectFromJSONData];

    //讀取解析後的json資料放熬數組裡面

    NSArray *arr = [resultDict objectForKey:@"name"];

    NSArray *list = [resultDict objectForKey:@"list"];

    NSLog(@"arr is :%@\n, list is :%@", arr,list);

//将解析後json資料再轉換為json進行輸出,

    NSString *jsonStr = [resultDict JSONString];

    NSLog(@"temp is :%@",jsonStr);

到這裡我們就為json解析中的jsonKit做了簡單的介紹,如果以後你還遇到需要解析json為妾是要用jsonKit的時候,基本上隻要把上面的代碼弄懂了,再在你項目裡面做小部分的相應更改就能很好的操作了!

下面是解析json的一個很好的執行個體

- (IBAction)btnPressJsonKit:(id)sender {

    //如果json是“單層”的,即value都是字元串、數字,可以使用objectFromJSONString

    NSString *json1 = @"{"a":123, "b":"abc"}";

    NSLog(@"json1:%@",json1);

    NSDictionary *data1 = [json1 objectFromJSONString];

    NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);

    NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);

    [json1 release];

    //如果json有嵌套,即value裡有array、object,如果再使用objectFromJSONString,程式可能會報錯(測試結果表明:使用由網絡或得到的php/json_encode生成的json時會報錯,但使用NSString定義的json字元串時,解析成功),最好使用objectFromJSONStringWithParseOptions:

    NSString *json2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"張三", "age":"32"}}";

    NSLog(@"json2:%@", json2);

    NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];

    NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);

    NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);

    [json2 release];

}