JSON和XML

什么是JSON

 JSON是一种轻量级的数据格式,一般用于数据交互

 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)

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

{"name" : "jack", "age" : 10}

{"names" : ["jack", "rose", "jim"]}

- 标准JSON格式的注意点:key必须用双引号

- 要想从JSON中挖掘出具体数据,得对JSON进行解析

- JSON 转换为 OC数据类型

JSON – OC 转换对照表


JSON和XML_第1张图片

JSON – OC 转换练习


JSON和XML_第2张图片

JSON解析方案

- 在iOS中,JSON的常见解析方案有4种

第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)

苹果原生(自带):NSJSONSerialization(性能最好)

NSJSONSerialization的常见方法

JSON数据 -> OC对象

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

OC对象 -> JSON数据

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

解析来自服务器的JSON


JSON和XML_第3张图片

XML

 什么是XML

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

跟JSON一样,也是常用的一种用于交互的数据格式

 一般也叫XML文档(XML Document)


JSON和XML_第4张图片
JSON和XML_第5张图片
JSON和XML_第6张图片

NSXMLParser

使用步骤

// 传入XML数据,创建解析器

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

// 设置代理,监听解析过程

parser.delegate=self;

// 开始解析[parser parse];

- NSXMLParser采取的是SAX方式解析,特点是事件驱动,下面情况都会通知代理

- 当扫描到文档(Document)的开始与结束

- 当扫描到元素(Element)的开始与结束

NSXMLParserDelegate

当扫描到文档的开始时调用(开始解析)

- (void)parserDidStartDocument:(NSXMLParser *)parser

当扫描到文档的结束时调用(解析完毕)

- (void)parserDidEndDocument:(NSXMLParser *)parser

当扫描到元素的开始时调用(attributeDict存放着元素的属性)

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

当扫描到元素的结束时调用

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

GDataXML配


JSON和XML_第7张图片
JSON和XML_第8张图片

GDataXML使用

- GDataXML中常用的类

     - GDataXMLDocument:代表整个XML文档

     - GDataXMLElement

            - 代表文档中的每个元素

            - 使用attributeForName:方法可以获得属性值

JSON和XML比较


JSON和XML_第9张图片

你可能感兴趣的:(JSON和XML)