【问题标题】:Sent Object as Parameter using Alamofire使用 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],然后您创建论文数组。

标签: ios swift swift3 alamofire


【解决方案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)

【讨论】: