在之前的[《](http://blog.csdn.net/xyz_lmn/article/details/9164019)[iOS学习——xml数据解析(九)》](http://blog.csdn.net/xyz_lmn/article/details/9164019)介绍了xml数据解析,这一篇简单介绍一下Json数据解析。JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与客户端的交互,[Json语法参考](http://blog.csdn.net/xyz_lmn/article/details/JSON)。关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也是比其他第三方开源项目的高很多,详情可看下图。
![](https://box.kancloud.cn/2016-01-14_569725c3ee413.jpg)
[图片详情可查看](http://arthurchen.blog.51cto.com/2483760/723910)
NSJSONSerialization提供了Json数据封包、Json数据解析,NSJSONSerialization将JSON数据转换为NSDictionary或NSArray解包方法,将NSDictionary、NSArray对象转换为JSON数据(可以通过调用isValidJSONObject来判断NSDictionary、NSArray对象是否可以转换为JSON数 据)封包。这一篇将做简单介绍。
![](https://box.kancloud.cn/2016-01-14_569725c40b3f9.jpg)
**Json数据封包**
~~~
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
// isValidJSONObject判断对象是否可以构建成json对象
if ([NSJSONSerialization isValidJSONObject:dic]){
NSError *error;
// 创造一个json从Data, NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性。
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"json data:%@",json);
}
~~~
**Json数据解析**
~~~
NSError *error;
//加载一个NSURL对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101120101.html"]];
//将请求的url数据放到NSData对象中
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];
NSString *text = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
NSLog(@"weatherInfo:%@", text );
~~~
- 前言
- (一)——ios搭建开发环境
- (二)——Hello iOS
- (三)——iOS系统架构
- (四)——iOS应用程序生命周期
- (五)——UI基础UIWindow、UIView
- (六)——ViewController
- (七)——UI基础UIButton
- (八)——iOS网络通信http之NSURLConnection
- (九)—— xml数据解析
- (十)——iOS真机调试
- (十一)——JSON数据解析
- (十二)——iOS国际化
- (十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
- (十四)——打电话、发短信
- (十五)——数据库操作(SQLite)
- (十六)——数据库操作(使用FMDB)
- (十七)——文件操作(NSFileManager)
- Swift初学习