这是一个来自学校的项目,我必须在其中创建一个登录应用程序,发送带有用户和密码的json数组并得到如下响应:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSDictionary *jsonRecieved = [NSJSONSerialization JSONObjectWithData:datosWeb options:kNilOptions error:NULL];
NSString *response = [jsonRecieved objectForKey:@"respuesta"];
if ([response isEqual: @"true"]) {
//do whatever I have to do here after succesfull login
}
所以,我知道这看起来很简单,但我不知道如何验证响应,这就是我在代码中所拥有的:
nameof
答案 0 :(得分:1)
如果我理解正确的话,你想阅读回复。
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSDictionary *jsonRecieved = [NSJSONSerialization JSONObjectWithData:datosWeb options:kNilOptions error:NULL];
NSNumber *response = [jsonRecieved objectForKey:@"respuesta"]; // the value is a number, not a string. It is not in quotation marks
if ([response isEqual:@YES]) // Compare to an NSNumber object with the value of YES
{
…
}
}
答案 1 :(得分:0)
看起来相当接近。但是,由于您正在检查字符串的响应,因此您需要稍微更改if条件和JSON。通过在引号" true"中包含true来更改您的JSON以返回字符串值,在您的if条件中,您将要检查您的响应是否等于" true"逐字逐句。
自:
{
"respuesta": true
}
if ([response isEqual: @"true"]) {
}
要:
{
"respuesta": "true"
}
if ([response isEqalToString: @"true"]){
}
不了解项目的要求,很难说哪种方式更好。比较字符串(不是最好的)或更改条件和数据以匹配NSNumber。
答案 2 :(得分:0)
请尝试这个可能对您有所帮助
- (void)requestFinished_list_my_product:(ASIHTTPRequest *)request {
SBJsonParser *json = [[SBJsonParser alloc] init];
NSDictionary* oDict = [json objectWithString:[request responseString]];
NSLog(@"Signup Response oDict = %@",oDict);
if ([[oDict valueForKey:@"status_code"] integerValue] == 1)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" message:[oDict valueForKey:@"message"] delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
alert.tag = 1;
[alert show];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fejl" message:[oDict valueForKey:@"msg"] delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];
return;
}
}
答案 3 :(得分:0)
如果响应值为布尔值,请使用
BOOL booleanValue = [[jsonRecieved objectForKey:@"respuesta"]boolValue];
if (booleanValue) {
}