IOS网络编程之生成与解析负载

来源:互联网 发布:淘宝网春秋妈妈装 编辑:程序博客网 时间:2024/06/02 01:10

负载:

在服务的请求响应事务中交换的数据。如在POST请求中,负载指请求体。

负载的数据格式:

(1)XML: 可扩展标记语言,用于编码和组织数据。XML文档包含标记和内容。 标记由标签、属性和元素组成。标签包括起始标签、结束标签、空元素标签(也叫自关闭标签)。属性指起始标签或结束标签中的键值对,提供了元素的附加信息。元素是标签、属性和内容的集合。包含起始标签与结束标签或只包含空元素标签,起始标签与结束标签之间的就是内容。内容可以包好标记以及其他元素,如下例:

<person>    <firstName>Nathan</firstName>    <lastName>Jones</lastName>    <emailAddress primary='true'>email@domain.com</emailAddress>    <noContact medium='email'/></person>

(2)JSON :JavaScript对象符号,用于交换结构化信息的轻量级数据格式。JSON支持的数据类型以及与之关联的格式规则:

  • 数字:无双引号
  • BOOL:无双引号,true/false
  • 数组:[1,2,3,…]
  • 对象:{“key”:”value”, ….}, NSDictionary
  • Null:无双引号
    如:
{    "person": {        "firstName":"Nathan",        "lastName":"Jones",        "email":{            "emainAddress":"email@domain.com",            "primary":true        },        "noContact":"email"    }}

(3)HTML:超文本标记语言,用于组织网页上的数据。HTML文档包含doctype定义(DTD)、元素、属性、数据类型与字符实体引用。与XML文档区别在于HTML文档用于预先定义好的标签和属性名的集合。

doctype位于html文档的第一行,告诉浏览器当前页面使用的是HTML规范的哪个版本。html5中可以自定义属性,这些属性以data-为前缀,并且不包含大写字符。自定义属性旨在存储不适合现有属性存储的特定于应用的数据。>

<!Document html>   // 告诉文档使用HTML5编写<html>    <head>        <title>Person:Nathan Jones</title>    </head>    <body>        <div id='firstName'>Nathan</div>        <div id='lastName'>Jones</div>        <div id='emailAddress' data-primary='true'>email@domain.com</div>        <div id='noContact' data-medium='email'/>    </body></html>

解析响应负载

  • XML:解析XML需要理解两种解析方式。
    (1)Simple API For XML (SAX):顺序解析XML的元素,一次处理一个元素。
    (2)Document Object Model(DOM):将整个XML文档以可遍历的结点树的形式读取在内存中。

    通过NSXMLParser和libxml两种进行解析

- **HTML** > 利用 libxml2.dylib进行解析- **JSON** > 通过NSJSONSerialization,配置解析方式的参数含义: >
(1)NSJSONReadingAllowFragments:告诉解析器处理既不是NSArray又不是NSDictionary的顶层对象。可以处理{“user”:null}简单的JSON结构的转换;
(2)NSJSONReadingMutableContainers:生成NSMutableArray和NSMutableDictionary对象;
(3)NSJSONReadingMutableLeaves:生成NSMutableString对象。
“`

生成响应负载

  • XML

    通过libxml/xmlwriter接口生成XML

  • JSON

    通过NSJSONSerialization的dataWithJSONObject:options:error:与writeJSONObject:toStream:options:error:生成,在调用该方法之前,先调用isValidJSONObject:来验证尝试转换的对象是否可以转换成JSON,能转换成JSON的对象必须满足以下规则:
    (1) 顶层对象必须是NSArray或NSDictionary
    (2) 所有的对象必须是NSString、NSNumber、NSArray、NSDictionary或NSNull
    (3) 所有的NSDictionary键必须是NSString
    (2) NSNumber的值不能为NaN或无穷大

    配置解析方式的参数:
    NSJSSONWritingPrettyPrinted,通过添加空白来生成更易读的JSON,不指定该选项则会生成尽可能紧凑的JSON。

0 0
原创粉丝点击