数组使用 Alamofire 发出请求
Array put request with Alamofire
我正在尝试使用 Alamofire 发出放置请求,我想传递如下内容:
[
{
"id" : 1,
"position": 0
},
{
"id" : 2,
"position": 1
},
{
"id" : 6,
"position": 2
}
]
通常,要用 alamofire 发出请求,我会这样做:
request = Alamofire
.request(
url,
method: method,
parameters: parameters,
encoding: encoding,
headers: buildHeaders());
Alamofire 强制我将参数设为字典,但我希望参数是一个字典数组。我该怎么做?
谢谢。
好吧,您的参数主体的类型为 [[String: Any]],或者如果您使用 Alamofire [Parameters]。
所以如果你解析一些对象数组来创建这个参数数组。你可以这样做:
var positionedArray = [[String : Any]]()
for (index, item) in dataArray.enumerated() {
guard let id = item.id else {
return
}
let singleParameters : [String: Any] = ["id": id, "position" : index]
sorted.append(singleParameters)
}
因此,您可以根据您的要求使用此正文(参数)。
另外,你应该使用 JSONSerialization:
例如,如果您使用自定义的 Alamofire 客户端,只需使用扩展名:
let data = try JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted)
let json = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
request.httpBody = json!.data(using: String.Encoding.utf8.rawValue)
var finalRequest = try URLEncoding.default.encode(request, with: nil)
Alamofire 在 Alamofire 5 中添加了对 Encodable
参数的支持,它提供了对 Array
参数的支持。更新到该版本将允许您直接使用 Array
参数。这种支持在传递 Array
参数时应该是自动的,如果您自定义编码,您只需要确保使用 encoder
而不是 encoding
使用 request
的版本.
我正在尝试使用 Alamofire 发出放置请求,我想传递如下内容:
[
{
"id" : 1,
"position": 0
},
{
"id" : 2,
"position": 1
},
{
"id" : 6,
"position": 2
}
]
通常,要用 alamofire 发出请求,我会这样做:
request = Alamofire
.request(
url,
method: method,
parameters: parameters,
encoding: encoding,
headers: buildHeaders());
Alamofire 强制我将参数设为字典,但我希望参数是一个字典数组。我该怎么做?
谢谢。
好吧,您的参数主体的类型为 [[String: Any]],或者如果您使用 Alamofire [Parameters]。
所以如果你解析一些对象数组来创建这个参数数组。你可以这样做:
var positionedArray = [[String : Any]]()
for (index, item) in dataArray.enumerated() {
guard let id = item.id else {
return
}
let singleParameters : [String: Any] = ["id": id, "position" : index]
sorted.append(singleParameters)
}
因此,您可以根据您的要求使用此正文(参数)。 另外,你应该使用 JSONSerialization:
例如,如果您使用自定义的 Alamofire 客户端,只需使用扩展名:
let data = try JSONSerialization.data(withJSONObject: parameters, options: JSONSerialization.WritingOptions.prettyPrinted)
let json = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
request.httpBody = json!.data(using: String.Encoding.utf8.rawValue)
var finalRequest = try URLEncoding.default.encode(request, with: nil)
Alamofire 在 Alamofire 5 中添加了对 Encodable
参数的支持,它提供了对 Array
参数的支持。更新到该版本将允许您直接使用 Array
参数。这种支持在传递 Array
参数时应该是自动的,如果您自定义编码,您只需要确保使用 encoder
而不是 encoding
使用 request
的版本.