免费开源的iOS开发学习平台

iOS开发之网络编程:7-JSON和XML简单介绍

在发送网络请求成功之后,服务器返回给客户端的数据,一般都是JSON格式或者XML格式。这篇文章我们简单介绍一下什么是JSON格式以及XML格式。

JSON简介

JSON是一种轻量级的数据格式,一般用于数据交互,目前JSON的使用非常广泛,绝大多数网络请求都采用了JSON格式。JSON的格式很像Objective-C中的字典和数组 ,标准JSON格式key必须用双引号包裹起来。

   {"name" : "九九学院", "site" : “www.99ios.com”}

要想从JSON中获取其中的详细数据,则需要对JSON进行解析,即将JSON转换为Objective-C中的数据类型。JSON数据格式与Objective-C对象之间的参照如下图所示。

对于JSON数据的解析既可以使用Foundation框架中提供的方法,也可以使用第三方框架。其中苹果官方提供了原生的解析JSON数据的方法--NSJSONSerialization。NSJSONSerialization类中提供了JSON与Objective-C对象之间相互转换的方法。

  • JSON数据转Objective-C对象,使用的是JSONObjectWithData:options:error:error方法
+ (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
  • Objective-C对象转JSON数据,使用的是dataWithJSONObject:options:error:方法
+ (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

另外,JSON的解析也可以使用第三方框架,常见的有JSONKit、SBJson等。需要特别说明的是,假如使用AFNeworking处理网络请求,该框架会自动帮我们解析JSON类型的网络响应数据。

XML简介

XML全称是Extensible Markup Language,译作“可扩展标记语言”,也是常用的一种用于交互的数据格式。XML样例如下所示。

根据样例可以看出,<></>都是成对出现的,这叫做标签。其中,<>是开标签,</>是关标签。要获取某个标签的数据,需要一步步遍历下去,直到找到所需要的那个标签下的内容。例如,我们需要获取【九九学院 第三讲】这个视频的长度length,那就需要先找到开标签为video的,然后再找到其中name是【九九学院 第三讲】的,然后就可以获取其中与name并列的length属性了。

对于XML数据的解析,同样可以使用苹果官方提供的框架以及第三方框架。在Foundation框架中,苹果为我们提供了NSXMLParser类用于处理XML类型的数据,第三方框架中比较有名的是GDataXML。