无法在NSDictionary中获得价值

时间:2013-02-16 21:04:48

标签: objective-c json nsdictionary

NSURL *jsonURL = [NSURL URLWithString:stringURL];
NSData *jsonData = [NSData dataWithContentsOfURL:jsonURL];
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
NSString *stringImageURL = [jsonArray valueForKey:@"artworkUrl100"];

最后一行是问题。我可以完美地获得数组,但stringImageURL的值为零。如何正确检索下面突出显示的键?

The NSDictionary value I want to use

2 个答案:

答案 0 :(得分:4)

NSString *stringImageURL = [jsonArray valueForKey:@"artworkUrl100"];

应该是

NSString *stringImageURL = [[[jsonArray valueForKey:@"result"]
                                      objectAtIndex:0]
                                        valueForKey:@"artworkUrl100"];

或者,更简洁

NSString *stringImageURL = jsonArray[@"result"][0][@"artworkUrl100"]; 

为什么?

数据嵌套比你想象的深2级,你所追求的字典值包含在一个数组中,在另一个字典中,在result键下。

答案 1 :(得分:2)

首先,您的jsonArray不是数组,而是字典。

其次,看起来你有一个包含字典数组的字典,所以它会是:

NSArray *resultsArray = [jsonArray valueForKey:@"results"];
NSDictionary *resultDict = [resultsArray objectAtIndex:0];
NSString *stringImageURL = [resultDict valueForKey:@"artworkUrl100"];