Alamofire服务器请求将整数参数转换为字符串

时间:2017-08-09 10:20:07

标签: ios swift alamofire

我必须发送包含

等字段的请求
id:1

问题是当我检查apache日志时,我看到该字段是

的形式
id:"1"

那不是拥有整数1,而是获得字符串“1”。这是我的代码

let parameters: Parameters = [
        "viewModel":viewModel];
    let headers: HTTPHeaders = [
        "Authorization": "Bearer " + getToken(),
        "Accept": "application/json"
    ]
    Alamofire.request(setUrl(),method:.post,parameters:parameters,headers: headers).responseJSON{
        response in
        print("Response:\(String(describing:response.result.value))")

        switch response.result {
        case .success:
            self.status = true;
            if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
                self.responseString = utf8Text
            }
            self.responseJSON = JSON(response.result.value as Any)
        case .failure:
            self.status = false;
        }
        completed()
    }

在启动请求之前,我确保所有必填字段都在Integer中。其他字段是字符串,因此我使用的是字典类型[String:Any] 我究竟做错了什么?我需要确保整数字段保持整数。

2 个答案:

答案 0 :(得分:3)

将编码设置为

JSONEncoding.default

对我来说很完美。

请求也可以像

Alamofire.request(url, method: .post, parameters: object, encoding: JSONEncoding.default)

同样适用于其他类型的方法!

答案 1 :(得分:1)

我知道这是一个迟到的回复,当然它会帮助某人。我也遇到了同样的问题,花了几个小时才搞清楚。

您需要在Alamofire请求中设置编码才能解决此问题。

编码:JSONEncoding.default

所以请求就像

Alamofire.request(setUrl(),method:。post,parameters:parameters,encoding:JSONEncoding.default,headers:headers).responseJSON {         回复