如何使用alamofire传递包含模型对象数组的复杂字典?



我需要在我的 Alamofire 请求中传递以下参数

{"order":{"student_id":"1483","restaurant_id":1,"quantity":1,"total_amount":90.0,"total_discount":0.0},"items":[{"item_id":"1","offer":"0.0","price":"90.0","quantity":"1"},{"item_id":"1","offer":"0.0","price":"90.0","quantity":"1"},{"item_id":"1","offer":"0.0","price":"90.0","quantity":"1"}]}

以下是我发送参数的Alamofire代码

let parameters = ["order": ["student_id": MY_USERID!, "restaurant_id": restaurantId,
"quantity":foodCartList.count,
"total_amount": totalPrice,
"total_discount": totalOffer],
"items": submitItems
] as [String : Any]
var request = URLRequest(url: URL(string: "MY_URL")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: parameters)

Alamofire.request(request).responseJSON { (response) in
if let error = response.result.error {
debugPrint(error.localizedDescription)
hideARSProgress()
return
}.....

对于名为 submitItems 的参数,我创建了一个模型类,如下所示

class SubmitItems {
var item_id: String?=nil
var quantity: String?=nil
var price: String? = nil
var offer: String? = nil
init(item_id: String,quantity: String,price: String,offer: String) {
self.item_id = item_id
self.quantity = quantity
self.price = price
self.offer = offer
}
}

然后创建了上述类的数组,称为submitItems并向其中添加了一些项目。

为整个数据层次结构创建结构(而不是类(,并使用Encodable对数据进行编码

struct Parameters: Encodable {
let order: Order
let items: [Item]
}
struct Item: Encodable {
let item_id, offer, price, quantity: String
}
struct Order: Encodable {
let student_id: String
let restaurant_id, quantity : Int
let total_amount, total_discount: Double
}

let order = Order(student_id: "1483", restaurant_id: 1, quantity: 1, total_amount: 90.0, total_discount: 0.0)
let items = [Item(item_id: "1", offer: "0.0", price: "90.0", quantity: "1"),
Item(item_id: "1", offer: "0.0", price: "90.0", quantity: "1"),
Item(item_id: "1", offer: "0.0", price: "90.0", quantity: "1")]
let parameters = Parameters(order: order, items: items)
request.httpBody = try! JSONEncoder().encode(parameters)

最新更新