【问题标题】:POST JSON Object through Almofire throws error通过 Almofire POST JSON 对象抛出错误
【发布时间】:2018-05-11 15:47:40
【问题描述】:

错误:调用中有额外的参数

let parameters = [
        "foo": [1,2,3],
        "bar": [
            "baz": "qux"
        ]
    ]
    Alamofire.request(.POST, "https://httpbin.org/post", parameters: parameters, encoding: .JSON)

【问题讨论】:

  • 试试这个代码let parameters = [ "foo": [1,2,3], "bar": [ "baz": "qux" ] ] as! [String: Any]
  • 您确定不想使用Encodable 参数对象执行此操作吗?处理起来要麻烦得多,尤其是在解码时,但这可能是另一个问题。
  • This question 展示了如何使用 Alamofire 从 JSONEncoder 编码的Codable 发出请求。我认为这比让它将“某物”编码为.JSON 更可预测。

标签: json swift post


【解决方案1】:

对于异构类型字典,您需要显式提供注释,在您的情况下为[String: Any]

    let parameters: [String: Any] = [
            "foo": [1,2,3],
            "bar": [
                "baz": "qux"
            ]
        ]

对于 alamofire 请求,我认为要么您使用的是旧版本的 alamofire,要么您编写的方法不正确。使用Alamofire 4.0,会写成:

    Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: JSONEncoding())

或者你也可以JSONEncoding.default作为编码:

    Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: JSONEncoding.default)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2017-05-04
    • 2014-09-03
    • 1970-01-01
    • 2023-04-06
    • 2018-02-18
    • 2014-05-20
    相关资源
    最近更新 更多