2013-04-26 55 views
18

我在dictionary看起來像保存在json分析結果:獲得特定鍵的值的NSDictionary

{ 
"statusCode":"200", 
"body":[ 
    { 
    "status":"success", 
    "remarks":null 
    } 
], 

"data":[ 
    "abcd":[ 
     { 
      "category":"a", 
      "title":"b", 
      "id":"24" 
     }, 
     { 
      "category":"c", 
      "title":"crd", 
      "id":"65" 
     }, 
     { 
      "category":"ds", 
      "title":"sd", 
      "id":"18" 
     } 

    ] 
    }, 
    { 
    "efgh":[ 
     { 
      "category":"ds", 
      "title":"sd", 
      "id":"18" 
     }, 
     { 
      "category":"sd", 
      "title":"sd", 
      "id":"1" 
     } 

          ] 
    }, 
    { 
    "ijkl":[ 
     { 
      "category":"ds", 
      "title":"sd", 
      "id":"18" 
     }, 
     { 
      "category":"sd", 
      "title":"sd", 
      "id":"1" 
     } 

    ] 
    } 
] 
} 

的數據關鍵@「數據」可以通過使用

NSMutableArray *getdata=[[NSMutableArray alloc]init]; 
getcat=[results objectForKey:@"data"]; 
被保存到一個數組

現在我應該怎麼做values(category, title, id)裏面的第一個索引,即"abcd"

如果有人有任何的知識,請看看。

感謝所有。

回答

44

下面會給你所需的對象

NSDictionary *dict=[results valueForKeyPath:@"data.abcd"][0]; 

對於個人:

NSString *categoryString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"Category"]; 
NSString *idString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"id"]; 
NSString *titleString=[[results valueForKeyPath:@"data.abcd"][0] objectForKey:@"title"]; 

此外,

NSString *categoryString=dict[@"Category"]; 
NSString *idString=dict[@"id"]; 
NSString *titleString=dict[@"title"]; 
+0

我無法獲取字典中的值,即類別,標識,標題。 – 2013-04-26 10:08:53

+0

nslog字典,如我的答案所示,並告訴打印什麼。 – 2013-04-26 10:11:16

+0

我通過NSString * cat = [dict valueForKeyPath:@「id」] [0]獲得了內部鍵值。 這意味着要獲取特定鍵的所有id,例如我必須用於循環的「abcd」下的所有id。 – 2013-04-26 10:14:25

2

檢查這樣的:

NSString *value=[[[getcate valueForKey:@"abcd"] objectAtIndex:0] valueForKey:@"category"]; 
0

這是一個數組,所以使用objectAtIndex:(即[getcat objectAtIndex:0]getcat[0]

+0

是的,我這樣做已經..的NSMutableArray * firstarray = [getcat objectAtIndex:0]; 「ABCD」:[ { 「類別」: 「一」, 「標題」: 「B」, 「ID」: 「24」 }, { 「類別」: 「C」, 「標題「:」 CRD」, 「ID」: 「65」 }, { 「類別」: 「DS」, 「標題」: 「SD」, 「ID」: 「18」 } ]但現在如何獲得內部的價值abcd ie類別,標題,編號 – 2013-04-26 09:54:41

+0

這是另一個詞典。我不明白爲什麼這給那麼多人造成如此多的麻煩。你已經在這一行做了完全相同的事情 - >'getcat = [results objectForKey:@「data」];'所以再做一次。 JSON不是火箭科學。你只能得到5或6種不同的類型,而且只能得到** 2種**類型。所以集合是數組(按數字獲取)​​或字典(按字符串獲取)。 – borrrden 2013-04-26 10:02:56