使用 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 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务
使用 swift 在 Alamofire 中发送带有对象数组的 JSON 作为参数