http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 12452|回复: 3

[IPHONE] IOS中使用JSONKit解析json

[复制链接]
发表于 2013-1-16 16:55:26 | 显示全部楼层 |阅读模式
本帖最后由 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具体使用可以参加之前帖子):
  1. NSString *urlWithParameter = [NSString stringWithFormat:@"http://192.168.x.xx:xxxx/ServiceXXXX.svc/GetXXXX?S=%@&D=%@",startLoc,endLoc];
  2.         NSURL *url = [NSURL URLWithString:[urlWithParameter stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
  3.         ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
  4.         [request setDelegate:self];
  5.         [request startAsynchronous];
  6.         [request setDidFinishSelector:@selector(requestDone:)];
  7.         [request setDidFailSelector:@selector(requestWentWrong:)];
复制代码
3、请求成功了的话会进入到相应的requestDone方法哦:
  1. //Your Opreation Code
  2.     NSString *responsestring = [request responseString];
  3.     NSError *error = nil;
  4.     NSDictionary *result = [responsestring objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode error:&error];
  5.     if([[result objectForKey:@"d"] isEqual:@"false"])
  6.     {
  7.         [self showAlert:@"沒有找到相關線路,請嘗試其他搜索"];
  8.         return ;
  9.     }
  10.     NSArray *arrayResult = [[result objectForKey:@"d"] objectFromJSONString];
  11.     for (int i=0; i< [arrayResult count]; i++) {
  12.         NSDictionary *dic = [arrayResult objectAtIndex:i];
  13.         NSString *strStart = [dic objectForKey:@"StartStop"];
  14.         NSString *strEnd = [dic objectForKey:@"EndStop"];
  15.         NSLog(@"起點>終點:%@ > %@",strStart,strEnd);
  16.     }
复制代码
4、这次使用的是JSONKit这个库,相比其他的json操作库而言,还是具备不少优点的哦;
1)、轻巧便利,只需要到github下载资源:https://github.com/johnezang/JSONKit,选取资源文件下的JSONKit.h和JSONKit.m文件,并且加入到你的项目中,并且在你需要使用的地方写上:
  1. #import "JSONKit.h"
复制代码
2)、解析效率还是相当的不错哦,略低于IOS5自带的解析功能,超过SBJSON这个解析库哦。
3)、使用起来也是很简单。
看看效果图吧:

console

console


好了,今天就分享到这里吧,有兴趣的朋友可以共同交流哦,联系方式就在个性签名里哦,亲。


select

select


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-1-17 10:06:36 | 显示全部楼层
咋都是老字呢?我文化低看不懂,呵呵
 楼主| 发表于 2013-1-17 13:47:04 | 显示全部楼层
admin 发表于 2013-1-17 10:06
咋都是老字呢?我文化低看不懂,呵呵

飞哥文化还低啊,让我们这些人情何以堪啊。
香港那边是使用繁体字,适应需要锣。
发表于 2013-1-17 13:48:46 | 显示全部楼层
Koson 发表于 2013-1-17 13:47
飞哥文化还低啊,让我们这些人情何以堪啊。
香港那边是使用繁体字,适应需要锣。

恩好,只要他们能看懂就行,我没学过繁体字,不过大部分能猜出来
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 15:54

© 2014-2021

快速回复 返回顶部 返回列表