类似的问题,在此之前,但有细微的差别已经公布,即:发送JSON或SwiftyJSON通过Alamofire POST
Alamofire: Sending JSON as request parameter
POST multiple json objects in Alamofire POST method - Swift/IOS
Sending json array via Alamofire
是最后一个,则最接近我目前的问题。但是,这种解决方案并不适合我。
我面临的问题是,我试图通过Alamofire POST请求发送一个我使用SwiftyJSON构建的JSON。像这样:
let url = NSURL(string: orderProductsEndpoint)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.setValue(requestToken, forHTTPHeaderField: "Authorization:")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let params = [ json.object ]
print(params)
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: [])
Alamofire.request(request)
.responseString{ response in
switch response.result {
case .Success(let value):
print("gut")
print(value)
case .Failure(let error):
print("not gut")
print(error)
}
}
然而,这无法正常工作,因为我与通信的API似乎并没有认识清楚,我要送的参数。
但后来我发现我发送的不是有效的JSON。这是我送:
[{
car = (
{
cant = 2;
id = 6;
name = "Saudi Plate";
},
{
cant = 1;
id = 5;
name = "Beef Wrap";
}
);
idUser = 58;
"total_loyalty_points" = 4200;
"total_price" = 42000;}]
但我的JSON转换为使用
let params = [ json.object ]
一个对象之前,它是通过JSONLint验证有效的JSON和它看起来像这样
{
"total_price" : 42000,
"car" : [
{
"id" : "6",
"cant" : 2,
"name" : "Saudi Plate"
},
{
"id" : "5",
"cant" : 1,
"name" : "Beef Wrap"
}
],
"idUser" : 58,
"total_loyalty_points" : 4200
}
所以问题在于我不得不改变JSON的结构,因为它似乎是通过Alamofire将它转换为对象的唯一方式。有没有办法通过Alamofire实际发送原始JSON?