在 Swift 中将数组转换为 Alamofire 参数

Ale*_*ley 2 parameters json ios swift alamofire

我用来在外部 API 上Alamofire调用.put方法。JSON在 Postman 中,我可以成功地以以下格式传递原始数据,其中每个项目都包含一个 ID 和一个数量。:

[{
    "id":"176",
    "quantity":"2"
}, {
    "id":"178",
    "quantity":"1"
}]
Run Code Online (Sandbox Code Playgroud)

卷曲示例:

PUT /cart HTTP/1.1
Host: someapi.biz
x-api-key: somekey
x-auth-token: sometoken
Content-Type: application/json
cache-control: no-cache
Postman-Token: sometoken
[{
    "id":"176",
    "quantity":"2"
}, {
    "id":"178",
    "quantity":"1"
}]------WebKitFormBoundary7MA4YWxkTrZu0gW--
Run Code Online (Sandbox Code Playgroud)

我很快就无法弄清楚如何将这些信息正确格式化为 Alamofire 的一组参数。

    for item in OrderedItems {
                let rowItem: JSON = ["id" : item.ID, "quantity" : item.Quantity]
??
}
Run Code Online (Sandbox Code Playgroud)

iVa*_*run 5

检查下面的代码:

var arrParam = [Any]()
    for item in OrderedItems
    {
        let rowItem: JSON = ["id" : item.ID, "quantity" : item.Quantity]
        arrTemp.append(rowItem)
    }

    // Convert Array into JSON String (Raw)
    guard let data = try? JSONSerialization.data(withJSONObject: arrParam, options: []) else {
        return
    }
    let paramString = String(data: data, encoding: String.Encoding.utf8)

    var request = URLRequest(url: URL(string: "URL")!)
    request.httpMethod = HTTPMethod.put.rawValue
    request.httpBody = paramString?.data(using: .utf8)

    Alamofire.request(request).responseJSON { (response) in

    }
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助。