如何在Alamofire中将参数作为字符串发送

时间:2019-04-25 02:08:00

标签: swift alamofire swift5

我必须接收指定需要传递给url的有效负载的JSON数据。看起来像这样:

{
  "token": "string",
  "body": {
    "token": "another string",
    "intValue": 1,
    "somethingElse": "another string"
  }
}

我知道 body 将具有始终为字符串或数字的属性。但是我不知道与各种各样的字符串或整数配对的关键是什么。

然后我需要用Alamofire发送该尸体,就像这样:

// parsing the data received with the Codable:
struct NotificationDetails: Codable {
    let token: String
    let body: [String:String]?
    let

    init (token: String) {
        self.token = token
        self.body = nil
    }

    init (token: String, body: [String:String]) {
        self.token = token
        self.body = body
    }

}

请注意,我不能只使用Alamofire方便的参数类型,例如:

struct NotificationDetails: Codable {
    let token: String
    let body: Parameters?

    init (token: String) {
        self.token = token
        self.body = nil
    }

    init (token: String, body: Parameters) {
        self.token = token
        self.body = body
    }
}

因为它是不可编码的,就像AnyObject一样。

// then elsewhere, using that data
guard let bodyJSON = localNotificationDetails.body else {
   callback()
   return
}
AF.request(url, method:method, parameters: bodyJSON).responseJSON(queue: queue) { response in

但是现在我看到我的一些数据将是数字而不是字符串,我想知道现在该怎么做?

1 个答案:

答案 0 :(得分:1)

使用bodyJson : [String : AnyObject]?

示例

let bodyJson = [
  "key" : "value",
  "key" : value,
"token": "string"
] as? [String : AnyObject]

在json正文请求中传递此类数据。

Alamofire.request(url, method: .post, parameters: bodyJson, encoding: URLEncoding.httpBody, headers: headers).responseJSON { (responseObject) -> Void in

                print(responseObject) 
}

您可以在responseObject

上执行其他操作