我有一个在JSON中看起来像这样的数据结构:
[{ "value": "1", "optionId": "be69fa23-6eca-4e1b-8c78-c01daaa43c88" }, { "value": "0", "optionId": "f75da6a9-a34c-4ff6-8070-0d27792073df" }]
基本上,它是一个字典数组。我宁愿使用默认的Alamofire方法,也不想手动构建请求。有没有办法给Alamofire提供我的参数,其余的Alamofire可以吗?
如果我手动创建所有内容,则会从服务器收到错误消息,提示发送数据不正确。
var parameters = [[String:AnyObject]]() for votingOption in votingOptions{ let type = votingOption.votingHeaders.first?.type let parameter = ["optionId":votingOption.optionID, "value": votingOption.votingBoolValue ] parameters.append(parameter) } let jsonData = try! NSJSONSerialization.dataWithJSONObject(parameters, options: []) let json = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: .AllowFragments) if let url = NSURL(string:"myprivateurl"){ let request = NSMutableURLRequest(URL: url) request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.HTTPMethod = Method.POST.rawValue request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: []) AlamofireManager.Configured.request(request) .responseJSON { response in //Handle result } }
您可以执行以下操作:
Alamofire.request(.POST, urlPath, parameters: params).responseJSON{ request, response, data in //YOUR_CODE }
哪里parameters是[String:AnyObject]和是Alamofire负责剩下的照顾。
parameters
[String:AnyObject]
由于您似乎正在使用经理,因此可以执行此操作
YOUR_ALAMOFIRE_MANAGER.request(.POST, url, parameters: params).responseJSON{ request, response, JSON in //enter code here }
这是源代码:
public func request( method: Method, _ URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL, headers: [String: String]? = nil) -> Request { let mutableURLRequest = URLRequest(method, URLString, headers: headers) let encodedURLRequest = encoding.encode(mutableURLRequest, parameters: parameters).0 return request(encodedURLRequest) }
编辑:
由于您的数据是当前数据[[String:AnyObject]],因此您需要对其进行修改,使其形式为[String:AnyObject]。我可以这样做的一种方式是这样做["data":[[String:AnyObject]]]。不过,您可能必须更改api端点。
[[String:AnyObject]]
["data":[[String:AnyObject]]]