您的位置 首页 > 腾讯云社区

iOS开发--服务器返回的数据解析---雷潮

App要与服务器交互才能达到数据更新和获取资源 那么: 服务器返回客户端的数据,一般返回两种格式:JSON格式、XML格式 (文件下载除外)

什么是JSON

轻量级数据格式,一般用于数据交互

JSON格式:key必须使用双引号{"type" : "super", "user_name" : "jack"}; {"user_names" : ["jack", "rose", "jim"]}JSON数据(NSData) -> OC对象(Foundation Object){} -> NSDictionary @{}[] -> NSArray @[]"jack" -> NSString @"jack"15 -> NSNumber @1012.5 -> NSNumber @10.5true -> NSNumber @1false -> NSNumber @0null -> NSNull

Paste_Image.png

JSON解析方案

iOS中有四种解析方案

前三种:

第三方框架:JSONKit、 SBJson、TouchJson(最差)

SBJson简单用法 NSData *data = nil; NSDictionary *dict = [data JSONValue]; // JSON字符串也可以使用此方法 NSDictionary *dict1 = [@"{"height": 2}" JSONValue];第四种:

苹果自带:NSJSONSerialization(性能最好,iOS5.0出现)

JSON数据(NSData) -> OC对象(Foundation Object)// 利用NSJSONSerialization类 + (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

在解析JSON方法NSJSONReadingOptions参数:

NSJSONReadingOptions NSJSONReadingMutableContainers = (1UL << 0) 创建出来的数组和字典就是可变NSJSONReadingMutableLeaves = (1UL << 1) 数组或者字典里面的字符串是可变的NSJSONReadingAllowFragments 允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumberKNilOptions 如果不在乎服务器返回的是可变的还是不可变的,直接传入KNilOptions,效率最高!返回的就是不可变的如何解析JSON:- (void)parseJSON // JSON格式化: { // 0.请求路径 NSURL *url = [NSURL URLWithString:@"http://110.20.256.139:30693/login?username=jack&pwd=superman123"]; // 1.创建请求对象 NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 2.发送请求 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { /* NSJSONReadingMutableContainers NSJSONReadingMutableLeaves NSJSONReadingAllowFragments */ // 解析JSON NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; // 打印解析出来的结果 NSLog(@"%@", dict[@"success"]); NSLog(@"%@", dict[@"error"]); // **** 也可以将服务器返回的字典写成plist文件 [dict writeToFile:@"/Users/leichao/Desktop/video.plist" atomically:YES]; }]; }OC对象(Foundation Object)-> JSON数据(NSData)// 利用NSJSONSerialization类 + (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; // 将字典转成字符串 // NSJSONWritingPrettyPrinted : 好看的印刷 NSData *date = [NSJSONSerialization dataWithJSONObject:@{@"name" : @"jack"} options:NSJSONWritingPrettyPrinted error:nil]; NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];格式化服务器返回的JSON数据

在线格式化: http://tool.oschina.net/codeformat/json 将服务器返回的字典或者数组写成plist文件

[dict writeToFile:@"/Users/leichao/Desktop/video.plist" atomically:YES];什么是XML

暂时不写了

---来自腾讯云社区的---雷潮

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: