2015-06-12 50 views
-4

迭代雖然NSDictionary的所以我有一個NSDictionary,從執行以下操作持有JSON數據:有JSON數據

NSDictionary* dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError]; 

當我的NSLog我的字典裏,我得到下面的輸出。

2015-06-11 17:13:49.699 AmigoDash[57994:1195566] (
     { 
     "_id" =   { 
      "$id" = 5579fde2e4b0588ab009f841; 
     }; 
     hours = "10-11"; 
     image = imageURL; 
     name = "Boleskine Bistro"; 
    }, 
     { 
     "_id" =   { 
      "$id" = 5579fe1fe4b0588ab009f84a; 
     }; 
     hours = "9-11"; 
     image = imageURL; 
     name = Amrikos; 
    } 
) 

我現在面臨的問題是試圖遍歷字典。當我嘗試這樣做時,代碼崩潰。一般來說,我是全新使用JSON和iOS的。不知所措。我最終需要從字典中的每個唯一對象的名稱和圖像信息,所以我必須通過字典進行迭代。

+1

顯示代碼和碰撞吸能跟蹤和消息 – Wain

+0

問題尋求幫助調試(「爲什麼不是這個代碼的工作?」)必須包括所期望的行爲,一個特定的問題或錯誤,並重現它在必要最短的代碼質疑自己。 –

+0

轉到json.org並瞭解JSON語法。 –

回答

1

從你的日誌,你JSON是一個數組

我認爲使用的keyPath,很容易

NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError]; 
NSArray * namesArray = [array valueForKeyPath:@"name"]; //This will get a names array 
NSArray * urlArray = [array valueForKeyPath:@"image"]; //This will get a url Array 

如果你仍然要循環

NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError]; 
for (NSDictionary * dic in array) { 
    NSString * name = [dic valueForKey:@"name"]; 
    NSString * hours = [dic valueForKey:@"hours"]; 
    //So on 
} 
0

你需要了解的JSON組件的基礎知識以及如何將它們解析到iOS中。我會給你一個簡單的例子,我得到了here。這個我一般用來解析JSON

{[ 
    { 
    "array": [ 
     1, 
     2, 
     3 
    ], 
    "boolean": true, 
    "null": null, 
    "number": 123, 
    "object": { 
     "a": "b", 
      "c": "d", 
     "e": "f" 
    }, 
    "string": "Hello World" 
    }, 
    { 
    "array": [ 
     1, 
     2, 
     3 
    ], 
    "boolean": true, 
    "null": null, 
    "number": 123, 
    "object": { 
     "a": "b", 
     "c": "d", 
     "e": "f" 
    }, 
    "string": "Hello World" 
    } 
]} 

這是你將得到的JSON的一般類型。

這些被解析如下

  1. []表示被解析成NSArray
  2. {}一個array表示被解析成NSDictionary
  3. truefalse一個dictionaryBOOL
  4. 123,32等是intNSIntegerNSNumber
  5. ""的文本是NSString

現在,你應該首先注意的結構,像什麼是裏面是什麼。然後進行相應的解析。

我們說了上面的例子。最外面的對象是一個NSDictionary{})。

NSDictionary *cityJSON = [NSJSONSerialization JSONObjectWithData:**Above JSON Data**]; 

裏面我們有一個NSArray[]

NSArray *testFeeds = [NSJSONSerialization JSONObjectWithData: cityData options:NSJSONReadingMutableContainers error:nil]; 

每個testFeeds對象是NSDictionary。我們從最外層到最內層的對象。

+0

你能解釋一下嗎 – YaBoiSandeep

+0

讓我知道你還沒有明白什麼,我可能會解釋更多 –

+0

增加了一些更多解釋。 –