Swift 3解析JSON数组然后循环播放

问题描述:

我对于在Swift 3中解析JSON数据感到非常困惑。这比我预期会来自Javascript背景更困难。从APISwift 3解析JSON数组然后循环播放

响应:

[ 
{ 
    "ID": 1881, 
    "image": "myimageURL", 
}, 
{ 
    "ID": 6333, 
    "image": "myimageURL", 
} 
] 

我的银行代码:

let images = [] as Array 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Alamofire.request(URL(string: "myURL")!, 
     method: .get) 
     .responseJSON(completionHandler: {(response) -> Void in 
      print(response) 
      //Parse this response. Then loop over and push value of key "image" of each object into the images array above. 
    }) 
} 

在Javascript中我根本就

let images = [] 
let parsed = JSON.parse(response) 
for(var i in parsed){ 
    images.push(parsed[i].image) 
} 
+2

'作为NSArray':在夫特3,不要。喜欢Swift Type Array而不是NSArray。 – Larme

var images: [String] = [] 

Alamofire.request("https://apiserver.com/api/images") //replace url with your url 
      .responseJSON { response in 
       if let jsonArray = response.result.value as? [[String: Any]] { 
        print("JSON: \(json)") // serialized json response 
        for json in jsonArray { 
         let image = json["image"] 
         images.append(image) 
        } 
       } 
      } 

let images = [] as NSArray 

以上线工作正常,但求更好方法可以使它成为s的通用数组trings替换上面的行与

var images = [String]() 

并插入以下代码来解析JSON对象

switch(response.result) { 
case .success(_): 

if response.result.value != nil 
{ 
    let array = response.result.value as! [[String: String]] 
    array.forEach{ dictionary in 
     images.append(dictionary["image"] ?? "") 
    } 
} 

case .failure(_): 
break 
}