iOS学习之数据解析

解析:按照约定好的格式提取数据的过程叫做解析;
后台开发人员按照约定好的格式存入数据,前端开发人员按照约定的格式读取数据;
主流的格式: XML / JSON 前端和后台都能识别的格式; 

XML解析
XML解析的两种工作原理:
1.SAX解析:基于事件回调的解析机制,逐行进行解析,效率低,适合于大数据解析.  系统提供的NSXMLParser.
2.DOM解析:把解析数据读入内存,初始化生成树形结构,逐层进行解析.效率高,适合于小数据解析. 谷歌提供的GDataXMLNode. 
 
解析工具:
GDataXMLNode  是由Google提供的开源的基于C语言的libxml2.dylib动态链接库而封装的OC的XML解析类,效率比较高. 采用DOM解析的原理.
使用GDataXML Nod步骤:
1.target — Build Phases - Link Binary 添加libxml2.dylib
2.target — Build Setting — 搜索 Header Search path 添加 /usr/include/libxml2
 
libxml2.dylib 与 libxml2.2.dylib的区别:
前者是一个快捷方式,永远指向的是最新的类库,而后者才是真实的类库,使用前者有一个好处,当类库更新时,我们老版本的项目无需再重新导入新的类库. 

 
JSON解析:
JsonKit 是通过给NSString, NSData添加分类的形式,增加解析功能.
 
//系统提供的解析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":@"18"
                           };
    NSData *jsonData2 = [dic2 JSONData];//转成JSON格式Data
    NSString *jsonStr2 = [dic2 JSONString];//转成JSON格式String

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。