1. JSON数据(NSData) -> OC对象(Foundation Object)
- {} -> NSDictionary @{}
- [] -> NSArray @[]
- "jack" -> NSString @"jack"
- 10 -> NSNumber @10
- 10.5 -> NSNumber @10.5
- true -> NSNumber @1
- false -> NSNumber @0
- null -> NSNull
JSON数据(NSData) -> OC对象(Foundation Object)
// 利用NSJSONSerialization类
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
- NSJSONReadingOptions
- NSJSONReadingMutableContainers = (1UL << 0)
- NSJSONReadingMutableLeaves = (1UL << 1)
- NSJSONReadingAllowFragments
- 允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumber
OC对象(Foundation Object)-> JSON数据(NSData)
// 利用NSJSONSerialization类
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
格式化服务器返回的JSON数据
2. XML的解析方式
NSXMLParser的用法
// 创建XML解析器
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
// 设置代理
parser.delegate = self;
// 开始解析XML(parse方法是阻塞式的)
[parser parse];
- 代理对象要遵守NSXMLParserDelegate协议,实现代理方法
/**
* 解析到某个元素的结尾(比如解析</videos>)
*/
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
}
/**
* 解析到某个元素的开头(比如解析<videos>)
*/
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
}
/**
* 开始解析XML文档
*/
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
}
/**
* 解析完毕
*/
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
}
GDataXML
// 加载整个文档
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
// 获得根节点
doc.rootElement;
// 获得其他节点
[element elementsForName:@"video"];
// 获得节点的属性
[element attributeForName:@"name"].stringValue;