Search code examples
iosswiftalamofire

Alamofire server requests converts integer parameters to string


I have to send request having fields such as

id:1

Issue is that when I check apache logs I see that field is in form of

id:"1"

That is rather than having Integer 1 , I am getting String "1". Here is my code

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()
    }

Before request is initiated , i have made sure that all required fields are in Integer. Other fields are string , hence I am using Dictionary of Type [String:Any] What am I doing wrong? I need to make sure that integer fields remain integer.


Solution

  • Setting encoding to

    JSONEncoding.default
    

    worked perfectly for me.

    The request can also be like

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

    And works great with other types of methods too!