如何使用JSON发送带有数组的字典?

时间:2016-06-07 03:22:36

标签: arrays json xcode swift alamofire

我的同事后端程序员说他已经配置了一个API,希望从我的移动应用程序中收到类似的东西:

[{"id":50},{"id":60}]

我使用Alamofire接收要发送的param字典。但我相信这也是使用NSURLSession或任何其他第三方插件的相同机制。

问题是:我应该如何构造字典以发送一组id,比如HTTP表单如何具有多个具有相同id的文本字段,然后它将作为id数组在服务器端接收?我到目前为止所做的一切都失败了:

param.setValue(50, forKey:"id");
param.setValue(60, forKey:"id");
// this only send the last single value

param.setValue([50, 60], forKey:"id");
// this results in error (415 unsupported media type)

param.setValue(50, forKey:"id[0]");
param.setValue(60, forKey:"id[1]");
// this also results in error (415 unsupported media type)

如何正确发送此内容,就像网络表单发送一样?感谢。

2 个答案:

答案 0 :(得分:3)

我认为您的问题的关键字是" Alamofire发送json "

如果您的服务器接受json数据,您可以这样做:

let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let values = [["id":50],["id":60]]

request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(values, options: [])

Alamofire.request(request)
    .responseJSON { response in

        // do whatever you want here

}
祝你好运!

答案 1 :(得分:2)

第一种方法的问题是你要覆盖密钥id的值,这就是它只发送最后一个值的原因。尝试将params作为数组发送。

let dict = NSMutableArray()
param.setValue(50, forKey:"id")
dict.addObject(param)
param.setValue(60, forKey:"id")
dict.addObject(param)

dict作为请求方法的参数传递。