JSON正逐步取代XML,成為網路資料的通用格式。
從ios5開始,使用NSJSONSerialization對JSON解析。還有第三方庫,比如SBJson, JSONKit, TouchJson等。從效能上說,NSJSONSerizlization最好,JSONKit其次,SBJson使用較為廣泛。
載入json檔案:
#pragma mark 載入json- (void)loadJson{ NSLog(@"load json"); //從web伺服器載入資料 NSString *str = @"http://www.baidu.com?format=json"; //這裡是亂寫的 //提示:NSData本身具有同步方法,但是在實際開發中,不要使用次方法 //在使用NSData的同步方法時,無法指定逾時時間,如果伺服器串連不正常,會影響使用者體驗。 //NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; //簡曆NSURL NSURL *url = [NSURL URLWithString:str]; //建立NSURLRequest NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f]; //建立NSURLConnect的同步方法載入資料 NSURLResponse *response = nil; NSError *error = nil; //同步載入資料 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; //錯誤處理 if (data != nil) { //下面這兩句話本身沒有什麼意義,僅用於跟蹤調試。 NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@", result); //在處理網路資料的時候,不要將NSData轉換成nsstring。 [self handlerJSONData:data]; }else if (data == nil && error == nil){ NSLog(@"空資料"); }else { NSLog(@"%@", error.localizedDescription); }}在這裡處理得到的nsdata格式的資料解析成json格式的資料。
#pragma mark 處理json資料- (void)handlerJSONData:(NSData *)data{ //json檔案中的[]表示一個資料。 //還原序列化json資料 /* 序列化: 將一個nsboject轉換成序列資料,以便通過互連網進行傳輸。 還原序列化:將網路上擷取的資料反向產生我們需要的對象。 */ NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", array); //json解析以後是nsarray格式的資料。}