我正在使用Alamofire 4.0Swift 3.0,并且正在使用以下代码来解析JSON:

Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

    switch(response.result) {
        case .success(_):
            if let JSON = response.result.value{
                print(JSON)
                //print(JSON["name"])
                //print(JSON["age"])
            }
            break

        case .failure(_):
            print("There is an error")
            break
    }
}

它给了我以下回应:
(
    {
        Name = "Peter";
        Age = "18";
    }
)

问题是我无法访问该值(NameAge),因为当我尝试执行JSON["name"]时,出现以下错误:

类型“任何”没有下标成员

我也尝试过添加as? [String: Any],因为这个问题建议:Alamofire fire variable type has no subscript members,另外一个也建议:Type Any has no subscript members Error in Swift 3.0?,但是当我使用它时,任何响应都会给我。

如果我使用:
case .success(_):
    if let JSON = response.result.value as? [String: Any]{
          print(JSON)
          print(JSON["TitularEmail"] as! String)
     }
     break
Xcode或Xcode控制台中均未显示任何错误。而是,没有给出响应。

如何以正确的方式解决此错误?没关系,使用解决方案之前我没有收到任何错误,但也没有收到任何响应,因此它根本无法修复。

提前致谢!

最佳答案

尝试以下代码:

Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in

switch(response.result) {
    case .success(_):
        if let JSON = response.result.value as! [[String : Any]]!{
                print("JSON: \(JSON)")
                let dic = JSON[0] as [String:AnyObject]!
                print("TitularEmail : ",dic?["TitularEmail"])
            }
        break

    case .failure(_):
        print("There is an error")
        break
}
}

关于ios - Alamofire 4.0上出现“类型'Any'没有下标成员”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39655771/

10-12 14:45
查看更多