a.[] 表示數組
b.{} 表示字典 - 對象模型建立關系
c.應用非常多,基本上移動開發的主要數據傳輸都是JSON
d. 讀取數據時效率高
e.在做實現讀取數據時,簡單便捷
要使用JSON,從網絡上獲取到數據之后使用:
[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
可以將網絡數據反序列化為字典或者數組,具體轉換類型,看JSON最外面的一個括號
* XML
a. 大,解析費勁
b. 解析步驟麻煩,效率低下
c. 直接看XML方便看出數據
XML解析需要
// 1) 實例化解析器
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
// 2) 設置代理
parser.delegate = self;
// 3)開始解析
[parser parse];
// 4)調用代理方法
===================================================================
// 1. 開始解析文檔,在這里做初始化工作
/**
1. 解析準備工作
- (void)parserDidStartDocument:(NSXMLParser *)parser
2.3.4 三個步驟會循環執行,一直到所有的節點解析完成
2.解析一個節點,即節點中的字典
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
3.負責拼接字符串,查找節點內容,可能會多次
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
4. 節點完成,可以用KVC直接設置對象內容
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
5. 用于收尾工作
- (void)parserDidEndDocument:(NSXMLParser *)parser
6. 解析出錯,需要把中間數據清除,以免造成不必要的錯誤
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
7.當XML格式如下:
<book pages="12" index="1">
<item id="1558" title="仙逆" tag="玄幻" source="/upload/file/2013_07_4/2013718101155179.zWords="" logo="/upload/pic/2013_06_5/20136211172503.png" jx="False" />
</book>
可以將所有的屬性設置到一個節點中的屬性節點中,如此只需要第二步即可。
清澈Saup
新聞熱點
疑難解答