我可以调用API并检索JSON数据。
以下代码返回字典对象:
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:ResponseData options:kNilOptions error:&error];
NSDictionary *hits = dataDictionary[@"hits"];
NSLog(@"%@", hits);
“hits”返回此数据:
{
"_id" = 521b95cf4a56d006d578c213;
"_index" = "f762ef22-e660-434f-9071-a10ea6691c27";
"_score" = "3.6973438";
"_type" = item;
fields = {
"brand_id" = 513fbc1283aa2dc80c000005;
"brand_name" = Subway;
"item_id" = 521b95cf4a56d006d578c213;
"item_name" = "6\" Subway Melt\U00ae";
"nf_serving_size_qty" = 1;
"nf_serving_size_unit" = serving;
};
我正在尝试获取“item_name”值,所以我尝试了这样:
NSString *nameOfItem = hits[@"item_name"];
NSLog(@"%@", nameOfItem);
但是,我导致SIGABRT错误,并显示以下消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7f97c0d85520'
我如何检索“item_name”值?
答案 0 :(得分:0)
首先,从您的错误消息中看来您的JSON输出似乎是一个数组。
您应该粘贴整个JSON或它的Sample结构。
无论如何,通过假设您的JSON包含字典数组并且每个字典都有一个名为item_name
的键指向另一个字典,在这种情况下,您可以通过这种方式检索值。
NSString *nameOfItem = hits[indexOfDictionary][@"fields"][@"item_name"];
OR
NSString *nameOfItem = [[[hits objectAtIndex:indexOfDictionary] objectForKey:@"fields"] objectForKey:@"item_name"];
如评论中提到的 Hot Licks ,您需要详细了解如何阅读JSON数据。
答案 1 :(得分:-1)
这应该得到你想要的。
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:ResponseData options:kNilOptions error:&error];
NSLog(@"%@", [[[dataDictionary objectForKey:@"hits"] objectForKey:@"fields"] valueForKey:@"item_name"]);