2012-01-29 78 views
0

我的JSON的反应是这样的:如何获得其它值之间的特定值具有相同关键字

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "285", 
       "short_name" : "285", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "Bedford Ave", 
       "short_name" : "Bedford Ave", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Williamsburg", 
       "short_name" : "Williamsburg", 
       "types" : [ "neighborhood", "political" ] 
      }, 
      { 
       "long_name" : "Brooklyn", 
       "short_name" : "Brooklyn", 
       "types" : [ "sublocality", "political" ] 
      }, 

我需要为重点long_name的最后一个值:

{ 
        "long_name" : "Brooklyn",//i need to get this "Brooklyn" 
        "short_name" : "Brooklyn", 
        "types" : [ "sublocality", "political" ] 
       }, 

如何我可以得到,虽然有很多值使用相同的密钥long_name

NSArray *resultsArray = [responseDict objectForKey:@"results"];//what to do next? 

回答

3
[[[[[resultsArray objectAtIndex:0] valueForKey:@"address_components"] valueForKey:@"long_name"] lastObject]; 

打破:

// get array of address components 
[[resultsArray objectAtIndex:0] valueForKey:@"address_components"] 

// calling this on array will get you long_name values from ALL elements 
...] valueForKey:@"long_name"] 

// finally grab the last element long_name array 
...] lastObject]; 

等效是:

[[[[resultsArray objectAtIndex:0] valueForKey:@"address_components"] lastObject] valueForKey:@"long_name"]; 

打破:

// get array of address components 
[[resultsArray objectAtIndex:0] valueForKey:@"address_components"] 

// get last dictionary 
...] lastObject] 

// get long_name from last dictionary 
...] valueForKey:@"long_name"] 
+0

请你澄清你的答案,另外,这是不是最后目标,我后面有类似的对象,但我没有在我的帖子中显示他们,所以我应该用订单号来代替它吗? – Malloc 2012-01-29 17:22:57

+0

是的,用'objectAtIndex:someIndex'替换'lastObject'调用。 – Eimantas 2012-01-29 17:25:50

+0

@Malek:第二种选择更好,因为它不涉及创建中间数组,但是在语义上他们产生相同的结果,所以或者像Eimantas状态那样工作。 – CRD 2012-01-29 19:14:05

相关问题