Как я могу напечатать json-контент ответа на пост-запрос в Alamofire в формате swift?
Итак, я использую alamofire и параметры, которые я передаю, действительны. Вот код на данный момент:
Alamofire.request(.POST, "http://mywebservice.com", parameters: myparameters)
.response { (request, response, data, error) in
if(error != nil){
print("error= \(error)")
}else{
print("there was no error so far ")
print(data)
var json = JSON(data!)
print(json) //prints unknown
print(json["id"]) //prints null
}
}
}
Я пробовал разные вещи, но пока ничего не получалось. Я использую alamofire и swiftyjson, ответ, который приходит от веб-сервиса json:
{
"id": "432532gdsg",
"username": "gsdgsdg"
}
и я хочу напечатать оба значения отдельно в случае успеха. Как мне это сделать?
2 ответа
Решение
Ваша проблема исходит из этой строки:
var json = JSON(data!)
JSON()
инициализатор из SwiftyJSON может принимать несколько типов входных данных.
Когда вы не указываете тип в init, SwiftyJSON пытается определить сам тип.
К сожалению, иногда это происходит молча, потому что неверно истолковывает ввод.
Таким образом, при использовании SwiftyJSON с NSData решение состоит в том, чтобы указать параметр "data:" для инициализатора JSON:
var json = JSON(data: data!)
Попробуй это
Alamofire.request(.POST, "http://mywebservice.com", parameters : myparameters , encoding : .JSON )
.responseData{ response in
let json = JSON(data.response.result.value!)
print(json)
let id=json["id"]
let username=json["username"]
print(id)
print(username)
}