首页 > 解决方案 > Alamofire 参数未正确序列化

问题描述

AFNetworking所以我在使用或使用任何其他 API 调用时从未遇到过这个问题,Alamofire但是我似乎遇到了问题,基本上我有一个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]]

蒂亚

//编辑

这是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
})

标签: iosjsonswiftdictionaryalamofire

解决方案


尝试改变:

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

或者

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

推荐阅读