使用 Alamofire 将对象作为参数发送

Posted

技术标签:

【中文标题】使用 Alamofire 将对象作为参数发送【英文标题】:Sent Object as Parameter using Alamofire 【发布时间】:2017-04-27 07:36:02 【问题描述】:

所以我想发送这样的参数:

我有一个这样的模型:

class test
  var id: String?
  var name: String?


我想要的Json:

[

 "id":"1",
 "name":"asda"

,


 "id":"2",
 "name":"asda"




]

以及如何将该类作为参数发送到 alamofire ???

让参数:[AnyObject] = listTest 但它不起作用:(

任何建议将不胜感激!

【问题讨论】:

你检查过这个:***.com/questions/40604502/…,在你的情况下,数据看起来像一个字典数组,所以你可以试试parameter: [ [ String: String] ] 它的键:值但在我的情况下只有没有键的值:( 您不能将您的对象发送到 Alamofire,因为它不是 JSON 有效的。您可以为您的类创建一个方法:toDict(),它将返回一个 Dictionary [String:String],带有["id":id, "name":name],然后您创建论文数组。 【参考方案1】:

要使用 Alamofire 将单个 JSON 对象发送到您的服务器,您只需要将对象转换为可序列化的字典。例如:

extension Test 
    func toDict() -> [String: String] 
        return ["id": id ?? "", "name": name ?? ""]
    

并指定正确的 JSON 编码发送它:

let parameters = test.toDict()
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default)

发送字典数组而不是字典有点棘手。从this answer提取的代码:

let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let values = tests.map  $0.toDict() 

request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(values, options: [])

Alamofire.request(request)

【讨论】:

以上是关于使用 Alamofire 将对象作为参数发送的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 将 JSON 对象作为 post 参数发送

如何使用Alamofire将单个对象作为参数发送

使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务

使用 swift 在 Alamofire 中发送带有对象数组的 JSON 作为参数

在 swift 中使用 alamofire 将参数作为原始数据发送

如何在响应闭包中访问 Alamofire 请求参数?