Objective c 在Restkit iOS中解析JSON而不进行对象映射
我已经创建了一个登录页面,它使用RestkitObjective c 在Restkit iOS中解析JSON而不进行对象映射,objective-c,ios,json,restkit,Objective C,Ios,Json,Restkit,我已经创建了一个登录页面,它使用RestkitRKClient发送登录详细信息,并返回JSON数据(用户或错误)。我希望能够在没有对象映射的情况下解析JSON数据,只解析JSON到字典。原因是它只是一个发送用户名和密码的简单登录,如果我设置了对象映射,我必须将登录详细信息设置到登录对象中,然后设置路由等。。。而且似乎有点冗长 这是我的密码 - (IBAction)login:(id)sender { [self.activityIndicator startAnimating];
RKClient
发送登录详细信息,并返回JSON数据(用户或错误)。我希望能够在没有对象映射的情况下解析JSON数据,只解析JSON到字典。原因是它只是一个发送用户名和密码的简单登录,如果我设置了对象映射,我必须将登录详细信息设置到登录对象中,然后设置路由等。。。而且似乎有点冗长
这是我的密码
- (IBAction)login:(id)sender
{
[self.activityIndicator startAnimating];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObject:self.username.text forKey:@"username"];
[params setObject:self.password.text forKey:@"password"];
[params setObject:@"login" forKey:@"type"];
[[RKClient sharedClient] post:@"/login" params:params delegate:self];
}
- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response {
if ([request isPOST]) {
if ([response isJSON]) {
NSLog(@"Got a JSON response back from our POST: %@", response.bodyAsString);
}
}
[self.activityIndicator stopAnimating];
}
如何将JSON数据获取到可读对象?谢谢您可以使用这样的开源库。它能够将JSON响应解析为NSDictionary或NSArray。在iOS 5.1+中,有NSJSONSerialization。您只需在RKResponse对象上调用parsedBody:nil,并将返回的对象分配给NSDictionary:
responseDict = [response parsedBody:nil];
作为额外的检查,我使用了一种方便的方法来检查是否有成功的响应:
- (bool) wasRequestSuccessfulWithResponse:(RKResponse*)response {
bool isSuccessfulResponse = NO;
id parsedResponse;
NSDictionary *responseDict;
if(response != nil) {
parsedResponse = [response parsedBody:nil];
if ([parsedResponse isKindOfClass:[NSDictionary class]]) {
responseDict = [response parsedBody:nil];
if([[responseDict objectForKey:@"success"] boolValue]) {
isSuccessfulResponse = YES;
}
}
}
return isSuccessfulResponse;
}
下面是使用RestKit 0.2和NSJSONSerialization的示例:
[[RKObjectManager sharedManager] getObjectsAtPath:kLoginURL
parameters:params
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSError *error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:operation.HTTPRequestOperation.responseData options:NSJSONReadingMutableLeaves error:&error];
NSLog(@"msg: %@", [json objectForKey:@"msg"]);
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
在RestKit0.2中我如何做到这一点,因为已经没有RKResponse类了我有同样的问题。。。混淆工具包可以完成复杂的工作,但有时我们只需要直接将响应作为dictionary而不是classic获取如果您希望将响应作为对象使用RKObjectManager如何使用NSJSONSerialization?