本帖最后由 Koson 于 2013-1-16 17:01 编辑
小版主有几天没有发帖子了,今日与大家分享一下经验吧。记得在以前的帖子里提及到了使用ASIHTTPRequest这个网络操作库调用wcf服务。在此基础上,谈谈如何解析wcf服务端返回给iPhone客户端的json数据吧。
1、请保证你的wcf服务端正常运行,能够返回你需要的数据,这里以json字符串为例,小版主返回的数据大致如下:
{"d":"[{\"StartStop\":\"萬基大廈\",\"Route1\":\"89\",\"Stop1\":\"富貴街\",\"Route2\":\"77\",\"Stop2\":\"西洋菜街\",\"Route3\":\"1277\",\"EndStop\":\"萬基大廈, 窩打老道\",\"Price\":\"14.0\",\"StopCount\":\"24\"},{\"StartStop\":\"萬基大廈\",\"Route1\":\"89\",\"Stop1\":\"富貴街\",\"Route2\":\"77\",\"Stop2\":\"西洋菜街\",\"Route3\":\"2328\",\"EndStop\":\"萬基大廈, 窩打老道\",\"Price\":\"14.0\",\"StopCount\":\"24\"},{\"StartStop\":\"萬基大廈\",\"Route1\":\"89\",\"Stop1\":\"富貴街\",\"Route2\":\"61\",\"Stop2\":\"西洋菜街\",\"Route3\":\"1277\",\"EndStop\":\"萬基大廈, 窩打老道\",\"Price\":\"14.0\",\"StopCount\":\"24\"},{\"StartStop\":\"萬基大廈\",\"Route1\":\"89\",\"Stop1\":\"富貴街\",\"Route2\":\"61\",\"Stop2\":\"西洋菜街\",\"Route3\":\"2328\",\"EndStop\":\"萬基大廈, 窩打老道\",\"Price\":\"14.0\",\"StopCount\":\"24\"},{\"StartStop\":\"萬基大廈\",\"Route1\":\"24\",\"Stop1\":\"富貴街\",\"Route2\":\"77\",\"Stop2\":\"西洋菜街\",\"Route3\":\"1277\",\"EndStop\":\"萬基大廈, 窩打老道\",\"Price\":\"14.0\",\"StopCount\":\"13\"}]"}
这个数据就不算是很复杂了哦。
2、iPhone客户端调用示例如下(ASIHttpRequest具体使用可以参加之前帖子):- NSString *urlWithParameter = [NSString stringWithFormat:@"http://192.168.x.xx:xxxx/ServiceXXXX.svc/GetXXXX?S=%@&D=%@",startLoc,endLoc];
- NSURL *url = [NSURL URLWithString:[urlWithParameter stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
- [request setDelegate:self];
- [request startAsynchronous];
- [request setDidFinishSelector:@selector(requestDone:)];
- [request setDidFailSelector:@selector(requestWentWrong:)];
复制代码 3、请求成功了的话会进入到相应的requestDone方法哦:- //Your Opreation Code
- NSString *responsestring = [request responseString];
- NSError *error = nil;
- NSDictionary *result = [responsestring objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode error:&error];
- if([[result objectForKey:@"d"] isEqual:@"false"])
- {
- [self showAlert:@"沒有找到相關線路,請嘗試其他搜索"];
- return ;
- }
- NSArray *arrayResult = [[result objectForKey:@"d"] objectFromJSONString];
- for (int i=0; i< [arrayResult count]; i++) {
- NSDictionary *dic = [arrayResult objectAtIndex:i];
- NSString *strStart = [dic objectForKey:@"StartStop"];
- NSString *strEnd = [dic objectForKey:@"EndStop"];
- NSLog(@"起點>終點:%@ > %@",strStart,strEnd);
- }
复制代码 4、这次使用的是JSONKit这个库,相比其他的json操作库而言,还是具备不少优点的哦;
1)、轻巧便利,只需要到github下载资源:https://github.com/johnezang/JSONKit,选取资源文件下的JSONKit.h和JSONKit.m文件,并且加入到你的项目中,并且在你需要使用的地方写上:2)、解析效率还是相当的不错哦,略低于IOS5自带的解析功能,超过SBJSON这个解析库哦。
3)、使用起来也是很简单。
看看效果图吧:
console
好了,今天就分享到这里吧,有兴趣的朋友可以共同交流哦,联系方式就在个性签名里哦,亲。
|