如何用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 {
}
}
}
答案 0 :(得分:1)
在您的代码更改方法中,将 .put 更改为 .post ,而在其他情况下则不需要SVProgressHUD.dismiss()
,因为您已经在其他情况下将其关闭了>
此外,您需要将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)
}
}
}
答案 1 :(得分:0)
我希望您的Parameters
类遵循Codable
协议。
据我所知,您在将对象解析为JSON时遇到错误。因此,这就是错误的根源。
您还可以为您的Parameters
类/结构添加代码
答案 2 :(得分:0)
首先,转换您的温度
数组为字符串
而不是在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;
}
}