![](/img/trans.png)
[英]How to post an array of dictionary (json object), in swift using alamofire?
[英]post array of json with alamofire 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()
,因為您已經在if else部分之前將其關閉
另外,您需要將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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.