使用 Alamofire 将 JSON 对象作为 post 参数发送
Posted
技术标签:
【中文标题】使用 Alamofire 将 JSON 对象作为 post 参数发送【英文标题】:Sending JSON object as a post parameter using Alamofire 【发布时间】:2018-04-14 19:29:22 【问题描述】:我目前正在开发一个 ios 应用程序,最近我遇到了一个障碍,基本上我尝试使用的 API 端点需要一个 JSON 对象作为这种格式的 POST 参数。
json:
product_report: [
"id_assigned_pos": someid,
"id_user": someid,
"number": somenumber,
,
"id_assigned_pos": someid,
"id_user": someid,
"number": somenumber,
,
"id_assigned_pos": someid,
"id_user": someid,
"number": somenumber,
]
我很难弄清楚如何使用 Alamofire 和 swift 4 来实现这一点。 我很感激有人的帮助。 谢谢!
【问题讨论】:
为了更好的解决方案,能否分享一下列表中使用的数据结构? @Kamran 我将所有内容都用作字符串。 【参考方案1】:let parameters = [
"json": [
"product_report": [
[
"id_assigned_pos": 1,
"id_user": 1,
"number": 1
],
[
"id_assigned_pos": 1,
"id_user": 1,
"number": 1
],
[
"id_assigned_pos": 1,
"id_user": 1,
"number": 1
],
]
]
]
Alamofire.request(url, method:.post, parameters:parameters, headers:headers).responseJSON response in
// Here is the response
`
【讨论】:
感谢您的快速响应,但我正在尝试使用领域数据库中的数据来实现这一点,我是否必须使用字典来构建参数?! 你应该使用 Codable 协议,它会自动完成。有很多关于codable的教程,google一下就行了。【参考方案2】:你可以试试这个:
var dict : [String: Any] = [:]
dict["type"] = "Step"
dict["data"] = ["2015-08-02": 8574];
let params: [String: Any] = ["r_id": "someName",
"data": String.jsonString(data: dataDict)];
这里的jsonString是String的扩展
static func jsonString(data : Any) -> String
var jsonString = "";
do
let jsonData = try JSONSerialization.data(withJSONObject: data, options: .prettyPrinted)
jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String
catch
print(error.localizedDescription)
return jsonString;
【讨论】:
以上是关于使用 Alamofire 将 JSON 对象作为 post 参数发送的主要内容,如果未能解决你的问题,请参考以下文章
使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务
使用 swift 在 Alamofire 中发送带有对象数组的 JSON 作为参数
使用 Alamofire 请求方法在 POST 的请求正文中发送 JSON 对象数组