Alamofire参数无法正确序列化

时间:2018-06-28 08:40:13

标签: ios json swift dictionary alamofire

因此,在使用AFNetworking或使用Alamofire进行任何其他API调用时,我从未遇到过此问题,但是我似乎遇到了问题,基本上我有一个Array of Dictionaries应该格式化像这样;

[{"value":"1","created_at":"2018-06-26 01:57:14"},
 {"value":"4","created_at":"2018-06-26 01:59:44"}]

但是它们是这样通过服务器端的;

[{"value":"4"},{"created_at":"2018-06-26 02:30:11"},
{"value":"4"},{"created_at":"2018-06-26 03:24:41"}]

我尝试创建硬编码参数以使其起作用,但没有成功,我在哪里做错了(我知道这可能是愚蠢的), 这是硬编码的演示参数;

let dictA =  ["value":"2", "created_at":"2018-06-26 04:05:50"]
let dictB =  ["value":"4", "created_at":"2018-06-26 05:05:50"]
let params : NSDictionary = ["values":[dictA,dictB]]

tia

//编辑

这是Alamofire请求;

Alamofire.request(urlString, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { response in 
    //Handle response 
})

//编辑

我已经解决了这一问题,由于某种原因,当使用本地URLRequest将对象序列化为主体时,对象会正确格式化,然后首先使用该请求初始化Alamofire请求;

var request = URLRequest(url: url)

request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: params)

Alamofire.request(request).responseJSON(completionHandler: { response in
         //Handle response
})

1 个答案:

答案 0 :(得分:1)

尝试更改:

let params: Parameters = ["values": [dictA, dictB]]

let params: [String: Any] = ["values": [dictA, dictB]]