json - 无法将类型 'DataResponse<Any>' 的值转换为预期的参数类型 'Data'

标签 json swift alamofire swifty-json

我正在向网站发送一个简单的发布请求,该网站发回如下所示的 JSON:

{
    Account = "blah blah";
    Password = "blah blah";
}

这是请求。

@IBAction func submitButtonClicked(_ sender: Any){
                AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
                .responseJSON{ response in
                    let json = try? JSON(data: response)
                }
}

我收到以下编译错误:

Cannot convert value of type 'DataResponse<Any>' to expected argument type 'Data'

我使用 Alamofire 发送请求并使用 SwiftyJSON 解析请求。我以前从未使用过 Swift 或任何一个库,所以我真的很想知道我需要做些什么来解决这个问题。

我想把账号和密码提取出来,分别存储在单独的变量中。我尝试按照其他教程进行操作,但没有成功。如果有人可以帮助我,我将不胜感激。

最佳答案

您需要 responseData 而不是 responseJSON

AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
            .responseData { response in 
   guard let data = response.data else { return }  
   let json = try? JSON(data:data)
   if let acc = json?["Account"].string {
     print(acc)
   }
   if let pass = json?["Password"].string {
     print(pass)
   }
}

其他变体

Alamofire.request("https://companywebsite.com", method: .post, parameters: [:], encoding:JSONEncoding.default)
    .responseJSON { response in
    let json = try? JSON(response.result.value!)
}

关于json - 无法将类型 'DataResponse<Any>' 的值转换为预期的参数类型 'Data',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937667/

相关文章:

ios - 使用 YouTube 数据 API 和 Alamofire 时出错

ios - 使用 Alamofire 路由器显示事件指示器

python - 使用 JSON 进行 Angular2 POST

swift - 如何从其 ASCII 值中获取字符?

javascript - 用 JS 读取本地 XML

ios - Swift 实例化ViewControllerWithIdentifier

ios - 如何在 swift 3 中使用 UIPrintInteractionController.print 设置要打印的页数?

ios - 加强 iOS 应用程序传输安全

android - 如何使用动态 URL 从 webview 获取 JSON?

json - ASP.NET MVC : Specify value provider on a per-action or per-route basis?