如何在Objective C中验证JSON中的属性

时间:2015-11-20 19:59:10

标签: objective-c json login

这是一个来自学校的项目,我必须在其中创建一个登录应用程序,发送带有用户和密码的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

4 个答案:

答案 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) {

    }