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

最后一行是问题。我可以很好地得到数组,但值为stringImageURLnil。如何正确检索下面突出显示的密钥?

我想使用的 NSDictionary 值

4

2 回答 2

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

应该

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

或者,更简洁

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

为什么?

数据的嵌套比您想象的要深 2 级,您要查找的字典值包含在数组中,在另一个字典中,在 key 下result

于 2013-02-16T21:07:47.380 回答
2

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

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

NSArray *resultsArray = [jsonArray valueForKey:@"results"];
NSDictionary *resultDict = [resultsArray objectAtIndex:0];
NSString *stringImageURL = [resultDict valueForKey:@"artworkUrl100"];
于 2013-02-16T21:09:43.900 回答