Kei*_*ith 6 swift alamofire swifty-json swift4
我有一组字典,正在尝试在 SwiftyJSON 的帮助下发布到 Alamofire。
api 设置为:
[
{
"imageUrl": "someimage3.jpg"
},
{
"imageUrl": "someimage4.jpg"
}
]
Run Code Online (Sandbox Code Playgroud)
打印出来时,我的包含图像对象的数组看起来像这样,其中包含 imageUrl 键和值的图像名称。
uploadedFiles = [
[imageUrl: "someimage.jpg"],
[imageUrl: "someimage2.jpg"]
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试将字典数组转换为正文所需的格式。我不太确定如何让它们成为 [String: AnyObject]
var body: [String: AnyObject] = [:]
let paramsJSON = JSON(uploadedFiles)
body = paramsJSON
Run Code Online (Sandbox Code Playgroud)
阿拉莫菲尔邮报
Alamofire.request("\(BASE_URL)mainimages/\(someid)", method: .post, parameters: body, encoding: JSONEncoding.default, headers: header).responseString { (response) in
if response.result.error == nil {
let status = response.response?.statusCode
completion(true, status)
} else {
completion(false, nil)
debugPrint(response.result.error as Any)
}
}
Run Code Online (Sandbox Code Playgroud)
该 API 似乎采用以数组作为顶层的 JSON,而不是字典,因此将数组转换为字典是不正确的。
只需传入一个数组即可!
SwiftyJSONJSON符合ExpressibleByArrayLiteral,因此您可以只使用数组文字:
let paramsJSON: JSON = [
["imageUrl": "someimage.jpg"],
["imageUrl": "someimage2.jpg"]
]
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚意识到 Alamofire 的request方法只接受[String: AnyObject]. 这意味着您需要进行自己的参数编码,如此处所示。
或者,创建您自己的,如本文URLRequest所示:
var request = URLRequest(url: someURL)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = paramsJSON.rawData()
Alamofire.request(request)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12506 次 |
| 最近记录: |