значения ключа из NSDictionary форматирования с "()" - PullRequest
0 голосов
/ 01 декабря 2010

Я пытаюсь вытащить два значения из этого словаря, но получаемые значения имеют "()" вокруг них Любые идеи, что вызывает это?

Вот выход сервера:

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

Словарь после JSON:

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

Вот что я получаю:

location : (
    beach
  )
user Id : (
    1
  )

И идентификатор пользователя, и значения ключа местоположения имеют "()". Вот код Большое спасибо.

    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 голосов
/ 02 декабря 2010

Вы можете использовать как это.

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

locationreturn = [[[useridDict valueForKey:@"Rows"] objectAtIndex:0] valueForKey:@"location"];
0 голосов
/ 02 декабря 2010

Просто чтобы уточнить, что происходит.При синтаксическом анализе JSON {} возвращается как словарь, а [] восстанавливается как массив.Таким образом, у нас есть useridDict NSDictionary, содержащий проанализированные данные.

'useridDict' имеет один ключ Rows, который возвращает NSArray.

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

Наши useridArrayимеет один элемент, NSDictionary

NSDictionary *dict = [useridArray objectAtIndex:0];

. Этот dict содержит два ключа: location и userid

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