2013-04-26 57 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