apple在ios5的時候提供了json的相關處理api,其中最主要的是NSJSONSerialization類。
1 + (BOOL)isValidJSONObject:(id)obj; 2 3 + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 4 5 + (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
其中最常用的就是以上3個類方法。
第一個用來判斷當前數據是否可以轉換成JSON,
第二個是把數據轉換成JSON,返回NSData,
第三個就是把JSON解析。
例子:
1 NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 2 [dictionary setValue:@"Xcode" forKey:@"name"]; 3 [dictionary setValue:@"4.6.3" forKey:@"version"]; 4 NSArray *otherValueArray = @[@"File", @"Edit", @"View", @"Navigate"]; 5 [dictionary setValue:otherValueArray forKey:@"navigator"]; 6 7 NSError *error = nil; 8 9 //轉成JSON 10 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary 11 options:NSJSONWritingPrettyPrinted 12 error:&error]; 13 if (error) 14 { 15 NSLog(@"dic->%@",error); 16 } 17 18 NSString *jsonString = [NSString stringWithUTF8String:[jsonData bytes]]; 19 20 //解析JSON 21 id resultString = [NSJSONSerialization JSONObjectWithData:jsonData 22 options:NSJSONReadingMutableLeaves 23 error:&error]; 24 if (error) 25 { 26 NSLog(@"dic->%@",error); 27 } 28 29 NSArray *navigatorArray = resultString[@"navigator"]; 30 31 NSLog(@"\njsonString:%@\nresultString:%@\nnavigatorArray:%@", 32 jsonString, resultString, navigatorArray);
NSLog輸出結果:
順便在提幾點,此功能僅限於IOS5才能使用。
根據網友的測試,這個自帶的解析效率比目前網上幾個第三方的JSON庫都要快。