"JSON解析"JSON是一種輕量級的數據格式,服務器返回給客戶端的數據一般都是JSON格式或者XML格式。文件下載除外。JSON格式很想OC中的餓字典和數組。注意:標準JSON格式的key必須是雙引號""
JSON和OC對象之間的對應關系:{字典}、[數組]、"字符串"
10/10.1-> NSNumber
true/false-> NSNumber
null -> NSNull
JSON的解析方案:第三方框架和蘋果原生。蘋果原生的NSJSONSerialization是性能最好的。
1,JSON ——> OC:反序列化
在NSURLSession返回的響應的block塊中,解析返回的data數據
[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
2,OC ——> JSON:序列化
可以先判斷當前對象能否轉為JSON:+ (BOOL)isValidJSONObject:(id)obj;
NSData *data = [NSJSONSerialization dataWithJSONObject:dictM options:NSJSONWritingPrettyPrinted error:nil];
"XML解析":可擴展標記語言。XML文檔的三部分,聲明、元素、和屬性。
XML解析工具:第三方框架和蘋果原生。蘋果原生:NSXMLParser,使用SAX方式解析,按順序一個元素一個元素的往下解析,可用于解析大、小文件
注意點:1,注意不能交叉包含。2,空格也算內容。3,標準的XML只有一個根元素。
解析步驟:
使用NSXMLParser解析,和代理方法。
1,創建一個解析器。
NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
2,設置代理。
parser.delegate =self;
3,開始解析。
[parser parse];
代理方法:
-(void)parserDidStartDocument:(nonnullNSXMLParser *)parser//開始解析XML文檔的時候調用。
-(void)parser:(nonnullNSXMLParser *)parser didStartElement:(nonnullNSString *)elementName namespaceURI:(nullableNSString *)namespaceURI qualifiedName:(nullableNSString *)qName attributes:(nonnullNSDictionary *)attributeDict {//開始解析XML中某個元素的時候調用,
if([elementName isEqualToString:@"videos"]) {
return;
}
//字典轉模型
XMGVideo *video = [XMGVideo objectWithKeyValues:attributeDict];
[self.videos addObject:video];
}
-(void)parser:(nonnullNSXMLParser *)parser didEndElement:(nonnullNSString *)elementName namespaceURI:(nullableNSString *)namespaceURI qualifiedName:(nullableNSString *)qName//當某個元素解析完成之后調用。
-(void)parserDidEndDocument:(nonnullNSXMLParser *)parser// XML文檔解析結束之后調用。