设为首页 加入收藏

TOP

数据解析(一)
2017-10-13 10:28:51 】 浏览:5072
Tags:数据 解析

数据解析

1 数据传输过程

前端:请求(iOS/安卓(JAVA)PC(浏览器(HTML/CSS/JS))) :OC/JAVA/HTML/CSS/JS

后端:响应(服务器开发:php/java/.net)

前端和后端交互的"数据格式": XML/JSON

数据解析. XML/"JSON" ----> OC

   客户端发送请求给服务器,服务器接收到客户端的请求之后,返回给客户端JSON数据.

   客户端需要把服务器返回的JSON数据转换为OC的数据格式(数组/字典等).

2 数据解析 :JSON

JSON是一种轻量级的数据格式,一般用于数据交互,服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外),JSON是java script语言的一个子集.java script是个脚本语言(不需要编译),用来给HTML增加动态功能.

注:  java script和java没有半毛钱的关系!

JSON的格式很像OC中的字典和数组  

NSJSONSerialization的常见方法

JSON数据 à OC对象

JSON – OC 转换对照表

JSON

OC

大括号 { }

NSDictionary

中括号 [ ]

NSArray

双引号 ” “

NSString

数字 10、10.8

NSNumber

 

3 解析数据的工具分类

  • JSON 解析的种类: SBJson, JSONKit, NSJSONSerialization
  • XML 解析的种类: DOM, SAX

4 JSON数据解析方法:

   在iOS中,常见的JSON数据解析方案有4种:

   第三方框架: SBJson ,JSONKit, TouchJson.性能从左到右,依次变差.

   苹果原生(自带):NSJSONSerialization (性能是最好的.iOS5以后推出).

5 解析JSON数据

   <1>反序列化(解析):

       将从服务器接收到的JSON数据(二进制数据)转换成OC数据类型(NSArray,NSDictionary等.)的过程.

   目的: JSON数据 --> OC对象; 得到数据字典或者数据数组

   好处: 简化程序的开发,方便后续的字典转模型.

   方法:

   +(id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)

opt error:(NSError **)error;

   <2>序列化:

       将数组或者字典发送给服务器之前,转换成二进制数据.

   目的:OC对象 --> JSON数据;得到二进制JSON数据 NSData;  

   好处:方便网络传输,提高传输速度.

   方法:

   +(NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

   "需要注意的是,在做序列化之前,一定要检测一下对象是否能够被序列化."

   // 在做序列化之前,一定使用 isValidJSONObject 检测一下要序列化的对象,是否能够正确被序列化

   // 避免出现闪退! 

6.JSON标准化(会简单的修改JSON数据)

具体思路:

> 发送网络请求

> 用字符串接收JSON数据

> 将JSON格式标准化

> 将标准化之后的JSON字符串转换成二进制数据

> 将标准的JSON二进制数据转化为OC数据

7. 学会将不标准的 JSON 数据解析出来!

> 先把jSON数据转为字符串

> 利用字符串的方法,修改JSON数据

> 将标准化之后的json字符串转换成二进制数据

> 将标准的JSON二进制数据转换成 OC 数据

8 XML 全称是Extensible Markup Language,译作“可扩展标记语言

XML特征:

1、XML是一种标记语言,很类似HTML

2、XML的设计宗旨是传输数据,而非显示数据

3、XML标签没有被预定义。您需要自行定义标签。

4、XML被设计为具有自我描述性。

5、XML是W3C的推荐标准

     XML是独立于软件和硬件的信息传输工具。 目前,XML在Web中起到的作用不会亚于一直作为 Web 基石的 HTML。 XML无所不在。XML是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。  

           XML常用的三种解析方式SAX/DOM/PULL。 

SAX是一个用于处理XML事件驱动的“推”模型,优点是一种解析速度快并且占用内存少的xml解析器,它需要哪些数据再加载和解析哪些内容。缺点是它不会记录标签的关系,而要让你的应用程序自己处理,这样就增加了你程序的负担。

   DOM是一种文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们的属性,增加一个元素等,Dom技术使得页面的交互性大大地增强。缺点是DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中。

Pull解析和Sax解析很相似,Pull解析和Sax解析不一样的地方是pull读取xml文件后触发相应的事件调用方法返回的是数字还有pull可以在程序中控制想解析到哪里就可以停止解析。 

 

SAX解析 :

NSXMLParserDelegate

// 1. 实例化 XML 的 SAX 解析器!

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];         

// 2. 设置解析器代理.

delegate = self;            

// 3. 开始解析 XML 文档

// 一旦调用了下面的开始解析方法,就会自动调用代理方法,解析 XML 文档!

 [parser parse];

 #pragma NSXMLParserDelegate

- (void)par

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇AFN 下一篇iOS 为什么app都是异步编程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目