2013-05-29 30 views
0

我剛剛提取了數據,但是當我嘗試將它附加到來自NSData的字符串時,編譯器會發生異常錯誤。 我的代碼看起來是這樣的:將JSONValue的NSDictionary數據解析爲字符串

NSDictionary *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil]; 
NSString *jSonStatus = [allDAtaDictionary objectForKey:@"status"]; 
if([jSonStatus isEqualToString:@"OK"]) 
{ 
    NSDictionary *results = [allDAtaDictionary objectForKey:@"user_details"]; 
    NSLog(@"User Details : %@",results); 

所有的東西效果很好,直到這些線路纔剛剛起步:

NSString *userID = [results objectForKey:@"userID"]; 

錯誤輸出是:

*終止應用程序由於未捕獲異常'NSInvalidArgumentException',原因:' - [__ NSCFArray objectForKey:]: 無法識別的選擇器發送到實例0x9485a00'

這是我的jSOn輸出,NSLog(@「User Details:%@」,results);

User Details : (
     { 
     userCity = California; 
     userCountry = "United States"; 
     userDOB = "1988-03-02"; 
     userDetails = ""; 
     userEmail = "[email protected]"; 
     userFBID = 715296184; 
     userFullName = "John Mc Grager"; 
     userGender = Male; 
     userID = 70; 
     userLastLoginTime = "2013-05-29 10:51:27"; 
     userLatitude = "37.7858"; 
     userLongtitude = "-122.406"; 
     userNickName = warblader; 
     userPassword = ""; 
     userStatus = 1; 
     userToken = ""; 
    } 
) 
+3

如果我有一個鎳每次有人問這個問題......呃,線索是在上面的第一行結束! – borrrden

+0

???????????????????????????????? –

+0

您認爲'__NSCFArray'是什麼意思? – borrrden

回答

3

看起來像JSON是一個包含一個字典的數組。你至少在這裏向我們展示了什麼。

所以

NSArray *results = [allDAtaDictionary objectForKey:@"user_details"]; 
NSLog(@"User Details : %@",results); 

assert(results.count>0); 
NSDictionary *user = [results objectAtIndex:0]; 

NSString *userID = [results objectForKey:@"userID"]; 
NSLog(@"%@", userID); 
+0

你讓我的一天!服務將數據與數組1中的數據進行比較,而不是將其轉換爲第0個數組索引的字典。 –

0

你的反應可能有一個數組,其中結果字典正在舉行,所以你需要使用ObjectAtIndex而調用objectForKey

1

首先你需要保存使用將序列化數據轉換爲數組..然後您必須相應地使用它..在這種情況下,

NSArray *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil]; 

L og索引0中的數組,並查看您正在獲取的內容。在此之後,您可以開始解析數據。

由於此原因發生異常。檢查我的答案在這裏解析JSON How to parse JSON with multiple instance in Object C