本文共 1766 字,大约阅读时间需要 5 分钟。
什么是JSON
1.JSON是一种轻量级的数据格式,一般用于数据交互
2.服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)
JSON的格式很像OC中的字典和数组
{"name":"zhong","age":20}
{"names":["zhong","li","huang"]}
标准JSON格式的注意点:key必须用双引号
要想从JSON中挖出具体数据,得对JSON进行解析
JSON转换为OC数据类型,其规律如下
JSON OC
大括号{ } NSDictionary
中括号[ ] NSArray
双引号 " " NSString
数字 10、10.8 NSNumber
JSON解析方案
常见的解析方案有4种
第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)
苹果原生(自带):NSJSONSerialization(性能最好,一般用这种)
NSJSONSerialization的常见方法:
JSON数据转换为OC对象
+(id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError *__autoreleasing *)error;
OC 对象转换为JSON数据
+(NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError *__autoreleasing *)error
例如在上次讲解到HTTP请求中http://blog.csdn.net/bun12345/article/details/44985563
在后续代码中补上:
这样就完成了对服务器返回来的json数据进行了解析,总的来说,我们要做的工作就是,知道服务器的url和要传的参数,然后向服务器发出请求,解析服务器返回来的数据就行了。//3.发送用户名和密码给服务器 //创建一个url:请求路径 NSString *urlStr = [NSString stringWithFormat:@"http://localhost/jiaxiao/login?username=%@&pwd=%@",usernameText, pwdText]; NSURL *url = [NSURL URLWithString:urlStr]; //创建一个请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //发送一个同步请求(在主线程发送请求),不过一般是不用同步请求的,比较容易卡住 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //解析服务器返回的 JSON数据 NSDictionary * dict= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; NSString *error = dict[@"error"]; if(error) { //{"error":用户名不存在} //{"error":密码不正确"} [self showError:error]; }else{ //{"success":登陆成功"} NSString *success = dict[@"success"]; [self showError:success]; }
即客户端向服务器发送请求,服务器返回NSData,(JSON数据),我们将其转换为OC对象(字典或者数组等),返回给客户端。