发布json与alamofire swift的数组

问题描述 投票:-1回答:3

如何在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 {


            }
        }

    }
ios arrays json swift alamofire
3个回答
1
投票

在你的代码更改方法.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)
                }
            }
    }

0
投票

我希望你的Parameters课遵循Codable协议。

据我所知,您将该对象解析为JSON时出错。因此,这是您的错误的来源。

你还可以为你的Parameters类/结构添加代码吗?


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;
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.