2010-12-01 66 views
0

我試圖從這個詞典拉兩個值,但我得到的值有「()」在他們周圍。任何想法是什麼造成這種情況?從「()」格式化NSDictionary的鍵值

這裏是SERVEROUTPUT:

JSON字典後
{"Rows":[{"userid":"1","location":"beach"}]} 

{ 
    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); 
+0

locationreturn是如何聲明的?它是一個NSArray? – Anna 2010-12-01 20:48:48

回答

0

只是爲了闡明發生了什麼。當解析JSON {}以字典形式返回時,[]以數組形式返回。所以我們有useridDictNSDictionary包含解析的數據。

'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]; 
0

您可以使用這樣的。

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

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