我有以下格式的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.dictionaryValuepostJson.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/

10-10 11:26