来自NSDictionary格式的键值“()”

时间:2010-12-01 20:15:02

标签: iphone nsstring nsarray nsdictionary

我正试图从这个字典中提取两个值,但是我得到的值在它们周围有“()”。是什么原因引起了这个?

这是ServerOutput:

{"Rows":[{"userid":"1","location":"beach"}]}

JSON之后的字典:

 {
    Rows =     (
            {
        location = beach;
        userid = 1;
    }
);
}

这就是我得到的:

location : (
    beach
  )
user Id : (
    1
  )

userid和location键值都有“()”。这是代码。非常感谢。

    NSString *serverOutput= [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];


if(serverOutput > 1){

       SBJSON *jsonFF = [[SBJSON new] autorelease];
       NSError *error3 = nil;
       NSDictionary *useridDict= [jsonFF objectWithString:serverOutput error:&error3];

       NSLog(@"useridDict: %@",useridDict);

    idreturn = [[useridDict valueForKey:@"Rows"] valueForKey:@"userid"];

    locationreturn = [[useridDict valueForKey:@"Rows"] valueForKey:@"location"];

    NSLog(@" user Id : %@", idreturn);
    NSLog(@" location : %@", locationreturn);

2 个答案:

答案 0 :(得分:0)

只是为了澄清发生了什么。当解析JSON {}作为字典返回时,[]作为数组返回。因此,我们useridDict NSDictionary包含已解析的数据。

'useridDict'有一个键Rows,返回NSArray

NSArray *useridArray = [useridDict objectForKey:@"Rows"];

我们的useridArray有一个元素NSDictionary

NSDictionary *dict = [useridArray objectAtIndex:0];

dict包含两个键:locationuserid

NSString *location = [dict objectForKey:@"location"];
NSInteger userid = [[dict objectForKey:@"userid"] intValue];

答案 1 :(得分:0)

你可以这样使用。

idreturn = [[[useridDict valueForKey:@"Rows"] objectAtIndex:0]valueForKey:@"userid"];

locationreturn = [[[useridDict valueForKey:@"Rows"] objectAtIndex:0] valueForKey:@"location"];