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

摘要:
第一个用于确定当前数据是否可以转换为JSON。第二种是将数据转换为JSON并返回NSData。第三个是解析JSON。根据网友的测试,这种内置解析效率比互联网上的几个第三方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(@"
jsonString:%@
resultString:%@
navigatorArray:%@",
32           jsonString, resultString, navigatorArray);

NSLog输出结果:

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

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

免责声明:文章转载自《IOS开发:官方自带的JSON使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据库_12_数据类型(列类型)QT 读写.ini配置文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发之APP导入添加自定义字体

我们平常项目开发用的字体基本都是系统默认的,但有时候设计为了追求完美,会使用自定义字体(当然得公司有钱买了版权哈),下面给大家讲讲怎么集成添加第三方字体。 1、导入三方字体文件进工程 我们就行平常添加文件一样,将字体文件导入xcode工程内,一般字体文件是ttc/ttf/otf 如果测试需要可以去下载方正字体练练手https://ziti8.cc/list...

iOS开发-图片高斯模糊效果

http://www.cnblogs.com/xiaofeixiang/p/5129074.html iOS开发的时候有的时候需要将图片设置模糊,或者通过点击下拉方法,去除模糊,一切都是为了应用更受用户欢迎,iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,关于图片实现高斯模糊效果有三种方式,CoreImag...

IOS开发---菜鸟学习之路--(十四)-将BASE64图片转换成Image

本文基本全部都是代码 首先是.H文件 1 #import <Foundation/Foundation.h> 2 3 @interface Base64AndImageHelp : NSObject 4 - (NSString*)encodeURL:(NSString *)string; 5 +(id)mydataWithBase64Enc...

iOS开发之Xcode常用调试技巧总结

转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题。平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼。Debug的技巧很多,比如最常见的方式是打个Log,在一些工程中处处可见NSLog。还有就是打断点的Debug方式等。诸如此类,下面就自己在开发过程中常用的Xcode调试技巧简单的做...

iOS开发之关闭暗黑模式

对于现在很多应用不想适配暗黑模式或者来不及适配的,可以关闭暗黑模式。 全局关闭暗黑模式:在 Info.plist 文件中,添加 key 为 User Interface Style,类型为 String,value 设置为 Light 即可。 单页面关闭暗黑模式: 单个页面或视图关闭暗黑模式,设置 overrideUserInterfaceStyle 为...

uni-app移动端开发中ios/安卓--坑和经验总结

1、 ios new时间对象,需要用逗号隔开传日期的方式, 不支持 new Date('2019-03-01 08:00:00') 格式; 支持以下两种方式: 2、 ios个别版本对fixed的属性的支持性不好,需要用absolute替代; 3、 input 的 placeholder会出现文本位置偏上的时候             input 的pl...