我正在解析JSON响应

时间:2017-05-16 18:39:44

标签: ios iphone json swift parsing

我正在解析JSON响应,我需要从密钥FILES获取数据,但代码无法正常工作

 do {
        let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
        if let name = json["LIBRARY"] as? [[String : AnyObject]]{
            if let files = name["FILES"] as? [[String : AnyObject]]{
                for file in files {
                    var info = Modal()
                   info.audioUrl = file["SRC"] as? String
                   print(info.audioUrl)
                   self.modals.append(info)
                } 
            }
        }
} catch let error {
   print(error)
}

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为在您的代码中name是一个数组,因此要获取files实例,您应该用以下代码替换代码:

if let namesArray = json["LIBRARY"] as? [[String : AnyObject]]{
    for name in namesArray {
        if let filesArray = name["FILES"] as? [[String : AnyObject]] {
            for file in filesArray {
                print(file["SRC"])
            }        
        }
    }
}

答案 1 :(得分:1)

首先在Swift 3中,标准JSON字典为[String:Any]

由于键LIBRARY的值是(正确解析)数组,因此必须按索引下标数组

if let library = json["LIBRARY"] as? [[String : Any]], !library.isEmpty {
   if let files = library[0]["FILES"] as? [[String : Any]] {

并且 - 一如既往 - .mutableContainers在Swift中完全没有意义,省略参数,