JSON.dictionaryObject имеет значение null в Alamofire Swift 3

У меня есть 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, поэтому мне нужно отправить данные JSON в формате словаря в parameters : ___, например:

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):

}

поэтому в основном я попытался преобразовать свой JSON в словарь с помощью postJson.dictionaryObject. Но всегда получает null от 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, теперь получаю ответ. Что я делаю неправильно? Я хочу использовать свой первый вариант.


person ashwini technopurple    schedule 17.04.2017    source источник
comment
Вы можете напрямую использовать ["firstname":"Vishal","lastname":"raskar","username":"vishal123","password":"123456","confirmpassword":"123456","email":"[email protected]","timezone":"1","accountid":"12345","phoneno":"8655012753"] в качестве параметров запроса, не нужно преобразовывать его в объект swiftyjson.   -  person Nishant Bhindi    schedule 17.04.2017


Ответы (1)


Предполагая, что вы используете Swift 3 / Alamofire 4.0

Вот как вы должны определить параметр «параметры» в соответствии с документацией Alamofire:

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)
    }

Чтобы узнать больше, нажмите здесь

person Unis Barakat    schedule 17.04.2017