如何在 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
传递给上面的函数。
我如何需要 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
传递给上面的函数。