如何在swift中使用alamofire发布json对象数组?
我的最终数据(我想发布)看起来像:
temp = [{
"time": 1,
"score": 20,
"status": true,
"answer": 456
},
{
"time": 0,
"score": 0,
"status": false,
"answer": 234
},
{
"time": 0,
"score": 20,
"status": true,
"answer": 123
}
]
我得到提示我必须创建自定义参数编码,但我很困惑,我怎么能这样做。有人请帮帮我。
my current code looks like
let parameters: Parameters = [
"answers": temp,
"challenge_date": "2019-03-01"
]
Alamofire.request("...url", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
.responseJSON {
response in
if
let status = response.response ? .statusCode {
let classFinal: JSON = JSON(response.result.value!)
if (status > 199 && status < 300) {
self.dismiss(animated: true)
} else {
}
}
}
在你的代码更改方法.put到.post,而不是SVProgressHUD.dismiss()
在else中,因为你之前已经解雇了if else part
此外,您需要将JSON字符串(临时变量)转换为数组,然后使用参数传递。
let parameters: Parameters = [
"answers": temp,
"challenge_date": "2019-03-01"
]
Alamofire.request("...url", method: .post, parameters: parameters, encoding: JSONEncoding.default , headers: headers)
.responseJSON { response in
if let status = response.response?.statusCode {
let classFinal : JSON = JSON(response.result.value!)
SVProgressHUD.dismiss()
if status > 199 && status < 300 {
self.dismiss(animated: true)
}
}
}
我希望你的Parameters
课遵循Codable
协议。
据我所知,您将该对象解析为JSON时出错。因此,这是您的错误的来源。
你还可以为你的Parameters
类/结构添加代码吗?
首先,转换你的温度
数组到字符串
而不是在Alamofire的参数中传递。
extension NSArray {
func toJSonString(data : NSArray) -> String {
var jsonString = "";
do {
let jsonData = try JSONSerialization.data(withJSONObject: data, options: .prettyPrinted)
jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String
} catch {
print(error.localizedDescription)
}
return jsonString;
}
}