使用RestKit进行JSON的解析
首先保证自己的项目中已经添加了RestKit源码并且可以编译成功,具体步骤见上篇文章。
当我们需要从服务器请求一个JSON内容时,我们需要对JSON格式的内容进行解析并获取其中的字段信息。JSON返回的数据格式可以映射到本地的一个类中,用户建立好这样的映射关系后,便可以直接从自己在本地映射的类实例中访问JSON字段信息了。下面说一下如何建立映射,从服务器请求JSON信息并访问。
步骤一:指定基准URL
在xcode项目的didFinishLaunchingWithOptions函数中添加如下代码:
[RKObjectManager objectManagerWithBaseURL:@"http://10.108.14.125:8080"];
其中@"http://10.108.14.125:8080"是以后要访问服务器的地址。
步骤二:建立本地映射类
@interface Adver : NSObject {
NSString *ad1;
NSString *ad2;
NSString *ad3;
}
@property (nonatomic, retain)NSString *ad1;
@property (nonatomic, retain)NSString *ad2;
@property (nonatomic, retain)NSString *ad3;
@end
@implementation Adver
@synthesize ad1;
@synthesize ad2;
@synthesize ad3;
@end
步骤三:建立映射
在需要进行请求的视图中,添加viewDidAppear函数,在其中添加如下:
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[Adver class]];
[mapping mapKeyPathsToAttributes:
@"id", @"ad1",
@"name", @"ad2",
@"picURL", @"ad3",
nil];
这样便将服务器的JSON对应的id、name、picURL字段映射到了本地自己创建类的ad1、ad2、ad3字段上。
步骤四:开始请求
在步骤三的代码下面添加如下请求代码:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/i2shoppingmobile/home/ad1" objectMapping:mapping delegate:self];
其中请求指定的资源相对路径是相对于基准地址的。
步骤五:回调并显示请求内容
首先保证当前视图控制器实现了RKObjectLoaderDelegate协议。添加回调函数:
-(void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
Adver *adver = [objects objectAtIndex:0];
NSLog(@"%@",[adver ad1]);
NSLog(@"%@",[adver ad2]);
NSLog(@"%@",[adver ad3]);
}
运行程序我们便可以访问JSON的信息了。