Alamofire - 如何发送无键对象数组

Alamofire - how to send an array of keyless objects

我正在尝试发送一个看起来像这样的 API 请求

[
  {
    "thing": "",
  },
]

基于像这样的对象数组

struct Something: Codable {
  var thing: String? = nil
}

[Something]

AF.request(path, method: .put, parameters: params, encoding: JSONEncoding.default, headers: headers)

很明显,Alamofire 无法做到这一点,并希望对象是这样的字典 [String, Any]

[
  "parentThing": {
    "thing": "",
  },
]

这里没有这个选项。我找到了一些可能的解决方案,none 在这种情况下有效。

如有任何帮助,我们将不胜感激!

对于我发现和尝试过的事物的详尽列表, or - 这些导致每个模型都被转换为这样的字符串。显然,字符串数组不是本意。它确实需要是一个 JSONObject 数组。

["{\"thing\":\"\",}"]

像这样发送数据[[String: AnyObject]]

示例:

func preparaeData() -> [[String: AnyObject]] {
    var data: [[String: AnyObject]] = [[String: AnyObject]]()
    
    for (item) in yourArray {
      let dataDictionary: [String: AnyObject] = ["thing": item.thing as AnyObject]
      data.append(dataDictionary)
    }
    
    return data
  }

不要使用 request(..., encoding:) 版本,将参数设置为 Encodable 并使用 request(..., encoder: JSONParameterEncoder()) 版本,它正确支持编码的值数组。