json - 快速向 JSON 的主体添加值
问题描述
我正在尝试从 swift (issue_id) 向 JSON 的主体添加一个值,我到处搜索,但看起来没有人真正回答或问我的问题。我也尝试将它添加到显然失败的参数中。
我知道如何添加参数和标题,但我不知道如何向正文添加值,这是代码
private func restAPI(path: String, method: String, params: [String: Any], callback: @escaping(_ result: [[String: Any]]) -> Void) {
var url: String = ""
if path == "/login" {
let dict = dictConvert(dictionary: params)
url = baseUrl + path + dict
}
else {
url = baseUrl + path
}
guard let urlData = URL(string: url) else {
callback([])
return
}
print("===URL=== " + url)
let request = NSMutableURLRequest(url: urlData)
request.httpMethod = "POST"
if let key = UserDefaults.standard.string(forKey: "auth-key") {
print("===Authentication=== " + key)
request.addValue(key, forHTTPHeaderField: "Authentication")
}
let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler:{ (data, _ , error) in
if error == nil {
do {
let stringData = String(data: data!, encoding: String.Encoding.utf8) as String!
print("Data === " + (stringData ?? "nil"))
if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray {
guard let jsonArray = json as? [[String: Any]] else {
callback([])
return
}
callback(jsonArray)
}
else if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary {
guard let jsonArray = json as? [String: Any] else {
callback([])
return
}
callback([jsonArray])
}
else {
callback([])
}
}
catch _ {
callback([])
}
}
})
task.resume()
}
解决方案
您需要使用类型为 Data 的 request.httpBody 并传递正文
let bodyDictionary: [String: Any] = ["key1": value1,
"key2": value2]
let requestBodyData = try? JSONSerialization.data(withJSONObject: bodyDictionary, options: [])
request.httpBody = requestBodyData
推荐阅读
- javascript - 基于所选链接的模型弹出动态内容
- object - Makefile:如何指定生成对象的位置
- python - Python:如何检查文件夹中的文件夹?
- django - Django-wkhtmltopdf 在服务器上崩溃
- cucumber - 功能文件没有在 Selenium junit 上按定义的顺序运行?
- mysql - 查询在 mssql 中有效,但在 MYSQL 中无效
- matlab - 代码正确时的Matlab透明度违规错误
- unix - sed 多次替换第二列中的模式
- excel - Excel VBA循环通过带有选择案例语句的组合框
- javascript - 如何检查何时在 Word Online 中将注释标记为完成?Word 插件的 Javascript API