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
时间: 2024-08-01 16:50:47

iOS学习之数据解析的相关文章

ios学习笔记——数据持久化

一.沙盒 沙盒目录是一种数据安全策略,很多系统都采用沙盒设计. 沙盒目录设计的原理就是只能允许自己的应用程序访问目录,而不允许其他的应用访问. 1.Documents目录:该目录用于存储非常大的文件或非常频繁更新的数据,能够进行iTunes或iCloud的备份,获取目录位置的代码如下: 1 NSString * pathArr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) la

【iOS】Plist-XML-JSON数据解析

网络上传输数据通用的有XML,JSON等,iOS中也可以用Plist. 要进行数据传输,就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话就行) 2.反序列化. 二进制流转换为对象等. (关键要弄清楚这个) JSON:(和XML一样都是用来传数据的) 轻量级的数据交换格式,正在逐步取代XML. XML: 结构性的标记语言,易读.但数据量大. Plist偶尔用着玩玩: Mac.iOS中用的多一种格式. 一.应用场景 1.XML的应用场景: XMPP--即时通讯,KissXML R

iOS中的数据解析(XML,JSON),SAX解析,DOM解析

第三方 SAT解析 #import "SAXTableViewController.h" #import "Student.h" @interface SAXTableViewController ()<NSXMLParserDelegate> @property (nonatomic, retain) NSMutableArray *dataSourse; // 存储学生对象 @property (nonatomic, retain) Student

iOS学习笔记-数据持久化

在iOS学习过程中,有时候需要保持用户数据,比如登录信息.用户的设置选项等,这时候就需要学习数据持久化操作,本节主要学习iOS数据持久化相关的知识. 数据持久化的方式有四种: 1).写入plist文件(属性列表) 2).偏好设置 3).归档(NSKeyedArchiver) 4).NSData 下面分别举例说明四种方式的适用场合以及用法. 1. 写入plist文件(属性列表) 1.1 plist可以存储哪些数据 属性列表是一种XML格式的文件,拓展名为plist 如果对象是NSString.NS

iOS学习 - 22 异步解析 JSON,使用 Model 存储,TableView 显示

Model 类: @interface ListModel : NSObject @property (nonatomic, copy)NSString *time; @property (nonatomic, copy)NSString *cname; @property (nonatomic, copy)NSString *summary; @property (nonatomic, copy)NSString *title; @property (nonatomic, copy)NSStr

iOS学习之UIStoryboardSegue解析

在 Storyboard 的可视化编程中,跳转界面就是按住 Ctrl 使用鼠标头一条连线就可以解决,相当的简单!本篇博客主要就是介绍这条连线,在iOS中,这条连线也是一个对象,也有其自己的初始化方法和属性.这个对象就是 UIStoryboardSegue . 以前在 可视化编程-Storyboard 中也介绍过 UIStoryboardSegue 的概述和自定义 1.Segue的属性 每一个 Segue 对象,都有3个属性 // 唯一标识 @property (nullable, nonatom

IOS中JSON数据的解析

IOS中JSON数据解析 官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法: + (BOOL)isValidJSONObject:(id)obj; 判断一个数据对象是否可以转化为JSON数据 + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 将JSON数据写为NSData数据,其中opt参数

iOS进阶学习-网络之数据解析

一.解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据. 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据. iOS开发常见的解析:XML解析.JSON解析. 二.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能:数据交换,内容管理,用作配置文件. XML数据结构的语法:1)声明:2)节点使用一堆标签表示:3)根节点是起始节点,只有一个,节点

ios json数据解析

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单,这个时候就犹豫了,要不写到博客上来 ? 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒! 还是 先看个效果图吧,如下! 接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下: 工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下