Как я могу напечатать 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)          
}
Другие вопросы по тегам