App要与服务器交互才能达到数据更新和获取资源 那么: 服务器返回客户端的数据,一般返回两种格式:JSON格式、XML格式 (文件下载除外)
轻量级数据格式,一般用于数据交互
{"type" : "super", "user_name" : "jack"};
{"user_names" : ["jack", "rose", "jim"]}
Paste_Image.png
iOS中有四种解析方案
第三方框架:JSONKit、 SBJson、TouchJson(最差)
SBJson简单用法
NSData *data = nil;
NSDictionary *dict = [data JSONValue];
// JSON字符串也可以使用此方法
NSDictionary *dict1 = [@"{\"height\": 2}" JSONValue];
苹果自带:NSJSONSerialization(性能最好,iOS5.0出现)
// 利用NSJSONSerialization类
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
在解析JSON方法NSJSONReadingOptions参数:
- (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];
}];
}
// 利用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];
在线格式化: http://tool.oschina.net/codeformat/json 将服务器返回的字典或者数组写成plist文件
[dict writeToFile:@"/Users/leichao/Desktop/video.plist" atomically:YES];
暂时不写了