我正在解析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)
}
答案 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中完全没有意义,省略参数,