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())
版本,它正确支持编码的值数组。
我正在尝试发送一个看起来像这样的 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 在这种情况下有效。
如有任何帮助,我们将不胜感激!
对于我发现和尝试过的事物的详尽列表,
["{\"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())
版本,它正确支持编码的值数组。