iOS学习之数据解析
.将通过网络请求或者本地路径获取到的数据存储为NSData对象.
.创建解析工具
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];
.设置代理
xmlParser.delegate = self;
.开始解析
[xmlParser parse];
[xmlParser release]; #pragma mark - delegate //当读取到标签后的内容时触发
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"读取到内容%@", string);
//用属性str存储读取到的标签内容;
_str = string;
}
//当读取到开始标签时触发
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
NSLog(@"开始标签");
if ([elementName isEqualToString:@"Student"]) {
//当读取到开始标签时,创建Student对象.
self.stu = [[[StudentModel alloc] init] autorelease];
//attributeDict 存储节点的属性值
self.stu.position = attributeDict[@"position"];
} }
//当读取到结束标签时触发</Student>
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(@"结束标签");
if ([elementName isEqualToString:@"name"]) {
self.stu.name = self.str;
} else if ([elementName isEqualToString:@"gender"]) {
self.stu.gender = self.str;
} else if ([elementName isEqualToString:@"age"]) {
self.stu.age = self.str;
} else if ([elementName isEqualToString:@"motto"]) {
self.stu.motto = self.str;
} else if ([elementName isEqualToString:@"Student"]) {
//读取到Student结束标签时,将Student对象存储到数组中
[self.dataSource addObject:_stu];
}
} //当解析完毕时触发
- (void)parserDidEndDocument:(NSXMLParser *)parser {
NSLog(@"解析完毕");
//当解析完毕时,让tableView重新刷新一下数据
[self.tableView reloadData];
}
//系统提供的解析JSON方法
- (void)handleSystemParser:(UIBarButtonItem *)item {
//1.获取文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"];
//2.根据文件路径初始化NSData对象
NSData *data = [NSData dataWithContentsOfFile:filePath];
//解析
NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@", arr); }
//第三方类库解析JSON方法(这里使用JSONKit)
- (void)handleThirdPartParser:(UIBarButtonItem *)item { //将Json格式数据转化为OC对象(NSString对象) //1.获取文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"]; //2.根据文件路径初始化字符串对象
NSString *dataStr = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
//3.解析成OC对象.(可变对象/不可变对象)
NSArray *arr1 = [dataStr objectFromJSONString];
NSArray *arr2 = [dataStr mutableObjectFromJSONString];
NSLog(@"%@",arr1);
NSLog(@"%@", arr2); }
选择了解---
当然,也可以解析成NSData对象,第一步的方法都一样,获取文件路径
- (void)handleThirdPartParser:(UIBarButtonItem *)item {
//将Json格式数据转化为OC对象(NSData对象)
//1.获取文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"];
//根据文件路径初始化成NSData对象
NSData *data = [NSData dataWithContentsOfFile:filePath];
//解析.(可变/不可变)
NSArray *arr1 = [data objectFromJSONData];
NSMutableData *arr2 = [data mutableObjectFromJSONData];
以上是将JSON数据转为OC的对象,下面是讲OC对象转为JSON数据的方法.
//将OC对象转成JSON格式数据.
//1.将OC的数组对象转成JSON格式数据.
NSArray *arr1 = @[@"aa",@"bb",@"cc",@"dd"];
NSData *jsonData1 = [arr1 JSONData];//转成JSON格式Data
NSString *jsonStr1 = [arr1 JSONString]; //转成JSON格式String
//2.将OC的字典对象转成JSON格式数据.
NSDictionary *dic2 = @{@"name":@"Frank",
@"age":@""
};
NSData *jsonData2 = [dic2 JSONData];//转成JSON格式Data
NSString *jsonStr2 = [dic2 JSONString];//转成JSON格式String
iOS学习之数据解析的更多相关文章
- iOS学习——JSON数据解析(十一)
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
- iOS学习—JSON数据解析
关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...
- iOS学习之数据请求
GET请求----同步连接 //GET请求 同步连接 - (void)handleSynchronize:(UIBarButtonItem *)item { //GET请求 //1.创建网址字符串; ...
- 【iOS】Plist-XML-JSON数据解析
网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...
- iOS学习笔记--数据存储
iOS应用数据存储的常用方式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3 Core Data 1. XM ...
- iOS 学习 - 22 异步解析 JSON,使用 FMDB 存储,TableView 显示
前提是已经知道了有哪些 key 值 Model 类: .h @interface ListModel : NSObject @property (nonatomic, copy)NSString *t ...
- ios网络_json数据解析
网络上数据传输以json或者xml格式. json是字典 或者 数组 或者字典跟数组嵌套的形式.解析json就是把json反序列化(解析)---把json转换为oc对象.json序列化就是把oc对象转 ...
- iOS学习之数据持久化详解
前言 持久存储是一种非易失性存储,在重启设备时也不会丢失数据.Cocoa框架提供了几种数据持久化机制: 1)属性列表: 2)对象归档: 3)iOS的嵌入式关系数据库SQLite3: 4)Core Da ...
- 【原】iOS学习之UIStoryboardSegue解析
在 Storyboard 的可视化编程中,跳转界面就是按住 Ctrl 使用鼠标头一条连线就可以解决,相当的简单!本篇博客主要就是介绍这条连线,在iOS中,这条连线也是一个对象,也有其自己的初始化方法和 ...
随机推荐
- uva 714 Copying Books(二分法求最大值最小化)
题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...
- Http请求工具实例编写
HTTP协议工作方式首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端.在这个通信的过程中HTTP协议在以下4个方面做了规定:1. ...
- UVA 195 Anagram
题意:求输入字符串的所有组合,按字典序输出! 解法:使用枚举(枚举前先找出最字符串的最小字典序)枚举时加上枚举生成条件! #include <iostream> #include < ...
- Listen第二个参数的意义
今天主要回顾下listen的第二个参数的意义. 话说现在现在都是用框架写业务代码.真的很少在去关注最基本的socket函数的意义了.该忘得都忘得差不多了.~~~ 要慢慢捡起来. 主要是在看redi ...
- MapReduce优化一(改变切片大小和Shuffle过程Reduce占用堆大小)
/*为防止处理超大作业时超时,将io时间设为1小时 * <property> <name>dfs.datanode.soc ...
- mongoose--------ORM数据操作框架
数据关系映射:ORM O:object R:relation M:mapping 把对数据库的操作都封装到对象中,操作了对象,就相当于操作了数据库. 安装: npm install mongoose ...
- 经常使用ASCII码表(方便查找)
经常使用ASCII码表(方便查找) 键盘 ASCII码 键盘 ASCII码 键盘 ASCII码 键盘 ASCII码 ESC 27 7 55 O 79 g 103 SPACE 32 8 56 P 80 ...
- cocos2dx--cocos2dx3.1.1执行报无法解析的外部符号
使用cocos2dx3.1.1和VS2012 新建了一个名为test的工程.放在D:\cocos2dx\cocos2d-x-3.1.1\projects下 编译通过,没问题 用cocostudio的场 ...
- Hadoop在Windows环境下的部署[转]
http://blog.csdn.net/ruby97/article/details/7423088 经过一整天的折腾,参考了网上很多资料,我机器上的Hadoop似乎是配置成功了.下面分享一下详细的 ...
- HashMap学习笔记
概述 HashMap是Map接口的一个哈希表的实现,内部是一个数组表示的.数组中的元素叫做一个Node,一个Node可以一个是一个简单的表示键值对的二元组,也可以是一个复杂的TreeNod ...