【问题标题】:How to send parameters as string in alamofire如何在alamofire中将参数作为字符串发送
【发布时间】:2019-04-25 02:08:00
【问题描述】:

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

{
  "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

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

【问题讨论】:

    标签: swift alamofire swift5


    【解决方案1】:

    使用bodyJson : [String : AnyObject]?

    例子

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

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

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

    你可以对responseObject进行其他操作

    【讨论】:

    • 我不能那样做——我有一个可编码的原因是因为我正在解码 json 以获得那个身体。您不能在 Codable 中有 AnyObject。我有点需要它是一个字符串。
    • medium.com/@JinwooChoi/… 可以帮到你
    • 所以我想出了如何从我的 json 中获取 [String:AnyObject] —— 这是很多工作,但我有。但是我得到了Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))——在调试器中,我可以清楚地看到该对象只是一个小的 [String:AnyObject] 1 init 和两个字符串值.. 看起来不错......它最初被声明为 @987654327 @
    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 2017-06-14
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多