2015-12-03 15 views
0

我有以下JSON,它通过JSONLint.com进行验证,我唯一的问题是我似乎无法从中获取所有值。从Swift 2.0中的JSON对象获取值

{ 
"success": true, 
"message": null, 
"content": [{ 
    "url": "6\/image_2.png", 
    "date_added": "2015-12-02 22:43:05", 
    "comments": ["Awesome Pic", "WOOHOOOOO THIS IS GREAT"], 
    "likes": [] 
}, { 
    "url": "6\/image_4.png", 
    "date_added": "2015-12-02 22:42:59", 
    "comments": [], 
    "likes": [] 
}, { 
    "url": "2\/image_1.png", 
    "date_added": "2015-12-01 06:43:48", 
    "comments": [], 
    "likes": [] 
}, { 
    "url": "2\/image_4.png", 
    "date_added": "2015-12-01 06:43:48", 
    "comments": [], 
    "likes": [] 
}, { 
    "url": "2\/image_5.png", 
    "date_added": "2015-12-01 06:43:48", 
    "comments": ["EhHHHH"], 
    "likes": [] 
}]} 

我试了一切,但它只是失败。这是我到目前为止。

if(response["success"] as! Int == 1){ 
    if let images = response["content"] as AnyObject?{ 
      // Does not work if I put NSDictionary? instead of AnyObject 
      // PRINTS THE OBJECT 
      print(images) 
      if let url = images["url"] as String?{ 
       // DOES NOT WORK 
       print(url) 
      } 
     } 
    }else{ 
     // Print error 
     let response = response["message"] as! String 
     print(response) 
    } 
+0

这个【答案】(http://stackoverflow.com/a/31296955/5222077)应该帮助 – kye

回答

2

content是一个集合,而不是一个单一的对象。因此,而不是NSDictionary,您应该将其投到NSArray并遍历每个项目。

let isSuccess = response["success"] as! Bool 
if(isSuccess) 
{ 
    if let dataArr=response["content"] as? NSArray 
    { 
     for item in dataArr 
     { 
     if let itemDict = item as? NSDictionary 
     { 
      let url= itemDict["url"] as! String 
      //Access other properties also here 
     } 
     } 
    } 
} 
+0

这个答案就像一个魅力。我想我已经掌握了它。我必须将注释转换为NSArray才能获得所有注释以及正确的注释? –

+0

是的。您需要将'itemDict [“comments”]''转换为'NSArrray'并循环播放,就像我们对内容收集所做的一样。 – Shyju