Alamofire: Как обрабатывать json-ответы в Swift 3 | xcode 8 | alamofire 4.0

Созданный на 30 сент. 2016  ·  3Комментарии  ·  Источник: Alamofire/Alamofire

Alamofire.request ("https://httpbin.org/get") .responseJSON {ответ в
debugPrint (ответ)

            if let json = response.result.value {
                let ip = json["url"] as! String
            }
        }

Ошибка: 👎 Тип "Любой" не имеет элементов нижнего индекса.

Самый полезный комментарий

Так я всегда обрабатываю свои ответы в формате JSON.

.responseJSON {
    response in

    switch response.result {
    case .failure(let error):
        // Do whatever here
        return

    case .success(let data):
        // First make sure you got back a dictionary if that's what you expect
        guard let json = data as? [String : AnyObject] else {
            NSAlert.okWithMessage("Failed to get expected response from webserver.")
            return
        }

        // Then make sure you get the actual key/value types you expect
        guard var points = json["points"] as? Double,
            let additions = json["additions"] as? [[String : AnyObject]],
            let used = json["used"] as? [[String : AnyObject]] else {
                NSAlert.okWithMessage("Failed to get data from webserver")
                return
        }

Все 3 Комментарий

            if response.result.value is NSNull {
                return
            }
            let JSON = response.result.value as? NSDictionary
            let id = JSON?["id"] as! String

Я думаю, тебе нужен? перед ["url"]

Так я всегда обрабатываю свои ответы в формате JSON.

.responseJSON {
    response in

    switch response.result {
    case .failure(let error):
        // Do whatever here
        return

    case .success(let data):
        // First make sure you got back a dictionary if that's what you expect
        guard let json = data as? [String : AnyObject] else {
            NSAlert.okWithMessage("Failed to get expected response from webserver.")
            return
        }

        // Then make sure you get the actual key/value types you expect
        guard var points = json["points"] as? Double,
            let additions = json["additions"] as? [[String : AnyObject]],
            let used = json["used"] as? [[String : AnyObject]] else {
                NSAlert.okWithMessage("Failed to get data from webserver")
                return
        }

Спасибо @grosch! 🍻

Была ли эта страница полезной?
0 / 5 - 0 рейтинги