{"title":"exampleTitle","hashTags":[{"name":"tag1"},{"name":"tag2"}],"uploadFiles":
[{"fileBytes":"seriesOfBytes\n","filename":"upload.txt"}]}

那是我想要发送到后端的所需主体。

我正在使用Swift 3.0和Alamofire 4,但我有多个问题。

首先,如何正确创建包含值和值数组的主体?

我的方法是:
let para:NSMutableDictionary = NSMutableDictionary()
para.setValue("exampleTitle", forKey: "title")
let jsonData = try! JSONSerialization.data(withJSONObject: para, options: .init(rawValue: 0))
let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue) as! String
print(jsonString)

这给了我
{"title":"exampleTitle"}

第二个,我的alamofire .post请求如下所示,但不起作用:
Alamofire.request(postURL, method: .post, parameters: jsonString, encoding: JSONEncoding.default)
        .responseJSON { response in
            debugPrint(response)
    }

我收到错误消息:调用中有额外的参数“方法”。如果我而不是jsonString使用类型的字符串
 var jsonString: [String : Any]

它确实有效,但我不知道如何将 body 放入这种类型。

摘要
寻找有关如何创建 body 以及如何通过Alamofire 4和swift 3将其发送到我的后端的帮助(最好的例子)。

最佳答案

您需要将参数作为[String:Any]字典传递,因此像这样通过JSON创建一个字典。

let params = [
                "title":"exampleTitle",
                "hashTags": [["name":"tag1"],["name":"tag2"]],
                "uploadFiles":[["fileBytes":"seriesOfBytes\n","filename":"upload.txt"]]
             ]

现在,将此params作为参数传递给Alamofire请求。
Alamofire.request(postURL, method: .post, parameters: params, encoding: JSONEncoding.default)
    .responseJSON { response in
        debugPrint(response)
}

关于json - Alamofire 4,Swift 3和构建json主体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40702845/

10-16 01:05