簡體   English   中英

用alamofire swift發布json數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM