IOS开发:官方自带的JSON使用

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输出结果:

IOS开发:官方自带的JSON使用

 

顺便在提几点,此功能仅限于IOS5才能使用。
根据网友的测试,这个自带的解析效率比目前网上几个第三方的JSON库都要快。

 

 

你可能感兴趣的:(ios开发)