微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – Alamofire:使用字典数组发送JSON

我有一个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
}

参数是[String:AnyObject],是的,Alamofire负责其余的事情.

由于看起来您正在使用经理,您可以这样做

YOUR_ALAMOFIRE_MANAGER.request(.POST,url,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].你可以这样做的一种方法我做这个[“数据”:[[String:AnyObject]]].你可能不得不改变你的api终点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐