什么是JSON
?JSON是一種輕量級的數據格式,一般用于數據交互
?服務器返回給客戶端的數據,一般都是JSON格式或者XML格式(文件下載除外)
JSON的格式很像OC中的字典和數組
{"name" : "jack", "age" : 10}
{"names" : ["jack", "rose", "jim"]}
- 標準JSON格式的注意點:key必須用雙引號
- 要想從JSON中挖掘出具體數據,得對JSON進行解析
- JSON 轉換為 OC數據類型
JSON – OC 轉換對照表
JSON – OC 轉換練習
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
XML
?什么是XML
全稱是Extensible Markup Language,譯作“可擴展標記語言”
跟JSON一樣,也是常用的一種用于交互的數據格式
?一般也叫XML文檔(XML Document)
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配
GDataXML使用
- GDataXML中常用的類
? ? ?- GDataXMLDocument:代表整個XML文檔
? ? ?- GDataXMLElement
? ? ? ? ? ? - 代表文檔中的每個元素
? ? ? ? ? ? - 使用attributeForName:方法可以獲得屬性值