Alamofire是否支持JSON作为有序的值列表进行结构化?参数为[String:Any],仅符合名称/值对的集合
定义JSON构建在两种结构上:Alamofire是否支持JSON作为有序的值列表进行结构化?参数为[String:Any],仅符合名称/值对的集合,json,swift,alamofire,Json,Swift,Alamofire,定义JSON构建在两种结构上: 名称/值对的集合。在各种语言中,这是 实现为对象、记录、结构、字典、哈希表、键控 列表或关联数组 值的有序列表。在大多数语言中,这是作为 数组、向量、列表或序列 我找不到一种方法让Alamofire处理参数为[Any]的post请求,这是我正在使用的端点所需的格式 错误消息实际上有点欺骗,因为它在执行Alamofire.request时声明“在'method'调用中有额外参数”,但实际问题是参数值不一致。Alamofire中名为parameters的参数需要[
- 名称/值对的集合。在各种语言中,这是 实现为对象、记录、结构、字典、哈希表、键控 列表或关联数组
- 值的有序列表。在大多数语言中,这是作为 数组、向量、列表或序列
错误消息实际上有点欺骗,因为它在执行Alamofire.request时声明“在'method'调用中有额外参数”,但实际问题是参数值不一致。Alamofire中名为
parameters
的参数需要[String:Any]
。如果您想通过Alamofire发送数组
,您可以像这样定义自定义参数编码
struct CustomEncoding: ParameterEncoding {
var _httpBody: Data?
func encode(_ urlRequest: Alamofire.URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var request = try URLEncoding().encode(urlRequest, with: parameters)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = _httpBody
return request
}
}
let body = ... // 'Array' converted to 'Data'
Alamofire.request(...,
method: ...,
parameters: [:],
encoding: CustomEncoding(_httpBody: body),
headers: ...)
然后像这样使用它
struct CustomEncoding: ParameterEncoding {
var _httpBody: Data?
func encode(_ urlRequest: Alamofire.URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var request = try URLEncoding().encode(urlRequest, with: parameters)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = _httpBody
return request
}
}
let body = ... // 'Array' converted to 'Data'
Alamofire.request(...,
method: ...,
parameters: [:],
encoding: CustomEncoding(_httpBody: body),
headers: ...)
你可以发布一些代码吗?我可以看看你的代码吗?我不认为你可以发送[任何]类型的参数。您需要为[String:Any]创建一个键值对。因此,该值可以通过服务器端的一个键来标识。@Aditya问题是服务器端不需要一个键值对,而是一个有序的值列表。服务器需要[1,2,3,4]},而不是{“numbers”:[1,2,3,4]},这也是一个有效的json。很高兴能为您提供帮助