如何在 swift 中使用 alamofire post 字典数组(json 对象)?

How to post an array of dictionary (json object), in swift using alamofire?

我如何需要 post 请求:

它在数据库中的样子:

您好,我正在开发一个美食应用,我需要将订单详细信息发送到数据库。为此,我创建了一个数据类型

class orderModel : NSObject {

var menu_name : String = ""

var quantity : Int = 0

var price : Double = 0.0

var menu_id : String = ""

init?(menu_name : String,menu_id : String, price : Double,  quantity : Int) {

    guard !menu_id.isEmpty else{
        return nil
    }

    self.menu_name = menu_name
    self.menu_id = menu_id
    self.price = price
    self.quantity = quantity

  }

}

这个。然后我用

下订单
 let parameters : Parameters = [
                    "custid" : defaults.object(forKey: "userid")!,
                    "carttotal" : Int(totalPrice),
                    "cartitems" : ordersArray,
                    "deliverytime" : timeSlot,
                    "custaddress" : custAdd!,
                    "areacode" : defaults.object(forKey: "areaCode")!
                ]

    Alamofire.request(orderPlaceURL, method: .post, parameters: parameters).responseJSON { response in

        print((response.result.value)!)

    }
    totalPrice = 0.0
    ordersArray.removeAll()

posted 数据应该看起来像第一张图片,但是当它输入数据库时​​,它显示像第二张图片。而不是数组元素,只是单词 "Array"。谁能建议我该怎么做?

Alamofile Parameters 对象的类型为 [String: Any],这不是您想要的。 而是制作一个包含多个字典的数组并将其传递给此函数:

func uploadDataToServer(endPoint: String, dataToUpload: [[String: Any]], completionHandler:@escaping (Bool) -> ()){

    let url = Config.BASE_URL + endPoint

    var request = URLRequest(url: URL.init(string: url)!)
    request.httpMethod = "POST"

    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    let dataToSync = dataToUpload
    request.httpBody = try! JSONSerialization.data(withJSONObject: dataToSync)

    Alamofire.request(request).responseJSON{ (response) in

        print("Success: \(response)")
        switch response.result{
        case .success:
            let statusCode: Int = (response.response?.statusCode)!
            switch statusCode{
            case 200:
                completionHandler(true)
                break
            default:
                completionHandler(false)
                break
            }
            break
        case .failure:
            completionHandler(false)
            break
        }
    }
}

你的数组应该是:

var uploadArray = [[String: Any]]()
let ordersDictionary = [
                    "custid" : defaults.object(forKey: "userid")!,
                    "carttotal" : Int(totalPrice),
                    "cartitems" : ordersArray,
                    "deliverytime" : timeSlot,
                    "custaddress" : custAdd!,
                    "areacode" : defaults.object(forKey: "areaCode")!
                ]

uploadArray.append(ordersDictionary)

然后将uploadArray传递给上面的函数。