Swift 如何在alamofire中以字符串形式发送参数

Swift 如何在alamofire中以字符串形式发送参数,swift,alamofire,swift5,Swift,Alamofire,Swift5,我必须接收指定需要传递到url的有效负载的JSON数据。它将如下所示: { "token": "string", "body": { "token": "another string", "intValue": 1, "somethingElse": "another string" } } // parsing the data received with the Codable: struct NotificationDetails: Codable {

我必须接收指定需要传递到url的有效负载的JSON数据。它将如下所示:

{
  "token": "string",
  "body": {
    "token": "another string",
    "intValue": 1,
    "somethingElse": "another string"
  }
}
// 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
    }

}
我知道主体的属性总是字符串或数字。但我不知道,与字符串或int的有效值配对的密钥是什么

然后我需要把尸体和阿拉莫菲尔一起送去,我是这样做的:

{
  "token": "string",
  "body": {
    "token": "another string",
    "intValue": 1,
    "somethingElse": "another string"
  }
}
// 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
    }
}
因为这是不可编码的,就像任何对象一样

// 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

但是现在我看到我的一些数据将是数字而不是字符串,我想知道我现在如何做到这一点?

使用
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) 
}

您可以使用
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

上执行其他操作,但我不能这样做--我之所以在那里有一个可编码的,是因为我正在解码json以获得该主体。在可编码表中不能有任何对象。我需要一根绳子。可能会对你有所帮助,所以我想出了如何从我的json中获取[String:AnyObject]——这是一个很大的工作,但我有它。但是我得到的是
Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailureFailed(错误:error-Domain=nscocaerorDomain code=3840“字符0周围的无效值”。
--在调试器中,我可以清楚地看到对象只是一个小[String:AnyObject]由1个init和两个字符串值组成。。看起来不错。。。它最初声明为
var-bodyJSON:[String:AnyObject]
我不能这么做——我之所以在那里有一个codable,是因为我正在解码json以获得该主体。在可编码表中不能有任何对象。我需要一根绳子。可能会对你有所帮助,所以我想出了如何从我的json中获取[String:AnyObject]——这是一个很大的工作,但我有它。但是我得到的是
Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailureFailed(错误:error-Domain=nscocaerorDomain code=3840“字符0周围的无效值”。
--在调试器中,我可以清楚地看到对象只是一个小[String:AnyObject]由1个init和两个字符串值组成。。看起来不错。。。它最初声明为
var bodyJSON:[String:AnyObject]