2016-12-02 24 views
0

我有以下的JSON:Swift2 - 嵌套JSON使用Alamofire 3

{ 
    "_embedded": { 
    "modifier_groups": [ 
     { 
     "_embedded": { 
      "options": [ 
      { 
       "id": "8kT9KTX7", 
       "name": "Perfect", 
       "open": false, 
       "pos_id": "8kT9KTX7", 
       "price_per_unit": 0 
      }, 
      { 
       "id": "zRcEkcj8", 
       "name": "Overcooked", 
       "open": false, 
       "pos_id": "zRcEkcj8", 
       "price_per_unit": 0 
      } 
      ] 
     }, 
     "id": "eMiy4iR4", 
     "maximum": 1, 
     "minimum": 1, 
     "name": "Temperature", 
     "required": false 
     }, 
     { 
     "_embedded": { 
      "options": [ 
      { 
       "id": "E5cpac84", 
       "name": "Tomato", 
       "open": false, 
       "pos_id": "E5cpac84", 
       "price_per_unit": 0 
      }, 
      { 
       "id": "GkiREiyL", 
       "name": "Cheese", 
       "open": false, 
       "pos_id": "GkiREiyL", 
       "price_per_unit": 100 
      } 
      ] 
     }, 
     "id": "kMT85Tay", 
     "maximum": null, 
     "minimum": 1, 
     "name": "Toppings", 
     "required": false 
     } 
    ] 
    }, 
    "count": 2, 
    "limit": 20 
} 

所以有調節基團的名稱(如「溫度」和「澆頭」),和組選項(例如「完美」和「過度烹飪」爲「溫度」組)。

我所試圖做的是建立一個[String]如:

["Temperature - Perfect", "Temperature - Overcooked", "Toppings - Tomato", "Toppings - Cheese"] 

什麼會去有關的最快方法是什麼?

目前,我第一次使用valueForKeyPath提取組爲[String]

Alamofire.request(.GET, url, headers: headers, encoding: .JSON) 
     .responseJSON { response in 
      switch response.result { 
       case .Success(let JSON):       
        let jsonData = JSON as? NSDictionary 
        let groupNames = jsonData?.valueForKeyPath("_embedded.modifier_groups.name") 

但我怎麼會從那裏鑽進深入到組選項,使我附上他們進入[String]

UPDATE

我試過,但它不返回任何東西:

var mods = [String]() 

let modGroups = jsonData?.valueForKeyPath("_embedded.modifier_groups") 

if let modGroups = modGroups { 
    for modGroup in modGroups as! [AnyObject] { 
     let groupOptions = modGroups.valueForKeyPath("_embedded.options") 
     if let groupOptions = groupOptions { 
      for groupOption in groupOptions as! [AnyObject] { 
       mods.append("\(modGroup) - \(groupOption)") 
      } 
     } 
    } 
} 

回答

0

明白了:

var mods = [String]() 

let modGroups = jsonData?.valueForKeyPath("_embedded.modifier_groups") as? [NSDictionary] 

if let modGroups = modGroups { 
    for modGroup in modGroups { 
     let groupOptions = modGroup.valueForKeyPath("_embedded.options") as? [NSDictionary] 
     if let groupOptions = groupOptions { 
      for groupOption in groupOptions { 
       mods.append("\(modGroup.valueForKey("name")!) - \(groupOption.valueForKey("name")!)") 
      } 
     } 
    } 
}