2016-12-23 2 views
1
запроса сообщения

My Alamofire выглядит следующим образом:Alamofire Сообщение запроса с вложенной JSON параметрами

Alamofire.request("http://...", method: HTTPMethod.post, parameters: parameters, encoding: JSONEncoding.default, headers: nil) 
     .responseJSON(completionHandler: {(response) in ... }) 

Все отлично работает, если мои параметры просты:

let parameters: Parameters = [ 
    "firstName": "John", 
    "lastName": "Doe" 
] 

я столкнуться с проблемами, если мои параметры содержат json object.

let address: JSON = [ 
    "street": "1234 Fake St", 
    "city": "Seattle", 
    "state": "WA" 
] 

let parameters: Parameters = [ 
    "firstName": "John", 
    "lastName": "Doe", 
    "address": address 
] 

Запрос Alamofire не выполняется, и мое приложение выходит из строя.

+0

Что такое 'JSON' в' пусть адрес: JSON'? –

+0

@ Mr.Bista Я использую [SwiftyJSON] (https://github.com/SwiftyJSON/SwiftyJSON). 'JSON' - тип данных. –

+0

были в состоянии решить проблему? –

ответ

2

Я считаю, что проблема здесь в том, что Alamofire пытается кодировать параметр как json, который уже является объектом json. По сути, двойное кодирование приводит к сбою приложения.

Решение, которое я нашел, состояло в том, чтобы декодировать параметр json перед выполнением запроса с использованием SweetJSON's .rawValue.

let parameters: Parameters = [ 
    "firstName": "John", 
    "lastName": "Doe", 
    "address": address.rawValue 
] 

https://github.com/SwiftyJSON/SwiftyJSON#raw-object

Смежные вопросы