我有以下格式的JSON:
postJson ={"firstname":"Vishal","lastname":"raskar","username":"vishal123","password":"123456","confirmpassword":"123456","email":"[email protected]","timezone":"1","accountid":"12345","phoneno":"8655012753"}
(postJson的数据类型为JSON,即swiftyJSON)
现在我想通过Alamofire在服务器上运行,因此我需要以
parameters : ___
的字典格式发布JSON数据,例如:Alamofire.request(URL, method: .post, parameters: postJson.dictionaryObject, encoding: JSONEncoding.default,headers: "Content-Type": "application/json").responseJSON { response in switch response.result {
case .success(let data):
case .failure(let error):
}
所以基本上我试图通过
postJson.dictionaryObject
将我的JSON转换为字典。但是,总是从postJson.dictionaryObject
获取空值(即使postJson
中存在数据)。我尝试了所有类似
postJson.dictionaryValue
,postJson.dictionary
的组合,但没有成功。然后,我尝试将
postJson
转换为Data
,然后将其转换为字典:if let data = postJson.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject]
}
catch {
print(error.localizedDescription)
}
}
然后通过Alamofire发布,现在得到了回应。我究竟做错了什么?我想使用我的第一个选项。
最佳答案
假设您正在使用Swift 3 / Alamofire 4.0
这是根据Alamofire文档定义“ parameters”参数的方式:
let parameters: Parameters = ["foo": "bar"]
Alamofire.request(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default)
.downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in
print("Progress: \(progress.fractionCompleted)")
}
.validate { request, response, data in
// Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
return .success
}
.responseJSON { response in
debugPrint(response)
}
要了解更多信息,click here
关于json - JSON.dictionaryObject在Alamofire swift 3中为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43448690/