2015-04-12 18 views
-1

我可以調用API並檢索JSON數據。試圖從JSON數據中獲取值內的值

下面的代碼返回字典對象:

NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:ResponseData options:kNilOptions error:&error]; 


NSDictionary *hits = dataDictionary[@"hits"]; 

NSLog(@"%@", 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

抱歉,但這看起來不是有效的JSON。無論如何,我看到「字段」下的「item_name」 –

+0

錯誤消息告訴你,你有一個數組,但你顯示的命中是一個字典。這是從您的日誌完整打印輸出?嘗試記錄[點擊課程],看看有什麼。 – rdelmar

+0

「點擊」沒有返回上面的數據。在上面的清單中省略了數據周圍的'()'字符。學習如何閱讀JSON! –

回答

-1

這應該得到你想要的。

NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:ResponseData options:kNilOptions error:&error]; 

NSLog(@"%@", [[[dataDictionary objectForKey:@"hits"] objectForKey:@"fields"] valueForKey:@"item_name"]); 
0

首先,從您的錯誤消息看來,你的JSON輸出是一個數組。

您應該粘貼整個JSON或其樣本結構。

無論如何,通過假設您的JSON包含字典數組,並且每個字典都有一個名爲item_name的鍵指向另一個字典,那麼您可以通過這種方式檢索值。

NSString *nameOfItem = hits[indexOfDictionary][@"fields"][@"item_name"]; 

OR

NSString *nameOfItem = [[[hits objectAtIndex:indexOfDictionary] objectForKey:@"fields"] objectForKey:@"item_name"]; 

正如在評論中提到熱舔,你需要閱讀更多關於如何閱讀JSON數據。

+0

這並不是提供了一個問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Irfan

+0

謝謝!更新! –