将DataResponse <string>转换为可用类型

时间:2018-05-17 22:19:03

标签: json swift type-conversion alamofire

我有一个POST请求,如下所示。我需要一些关于如何使用响应数据的帮助。我得到的回应是字典的形式。在这里使用的最佳做法是什么?我得到的错误信息是:

  

无法将“DataResponse”类型的值指定为“String”

类型
func getRequest(){
    let urlString = "http://scissors.pythonanywhere.com/getRequest"
    Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseString {
        response in
        switch response.result {
        case .success:
            print(response)
            var backToString = String(data: response, encoding: String.Encoding.utf8) as String?

            break
        case .failure(let error):

            print(error)
        }
    }
}

我试过了self.bookings = response as! String,但它给了我一个警告,说它会失败。还尝试了这个:Alamofire in Swift: converting response data in usable JSON dictionary没有运气。

修改

这是我从回复中获得的印刷品。

SUCCESS: {
    "10:00" =     {
        booked = false;
        name = "";
        number = "";
    };
    "10:30" =     {
        booked = false;
        name = "";
        number = "";
    };
    "11:00" =     {
        booked = false;
        name = "";
        number = "";
    };
}

3 个答案:

答案 0 :(得分:0)

既然您拥有JSON表示,那么您应该可以执行以下操作:

if let dict = response as? [String:Any]{
    if let obj = dict["10:00"] as? [String:Any]{
         let booked = obj["booked"] as? Bool ?? false
         print("booked: \(booked)");
    }
}

答案 1 :(得分:0)

我实际上最终使用了这种非常简单易用的方法。在我的情况下,预订被声明为:var bookings: NSDictionary = [:]

func getRequest(){

    let urlString = "http://scissors.pythonanywhere.com/getRequest"
    Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseJSON {
        response in
        switch response.result {
        case .success(let JSON):
            self.bookings = JSON as! NSDictionary

            self.tableView.reloadData()

            break
        case .failure(let error):
            print(error)
        }
    }
}

答案 2 :(得分:0)

尝试

import SwiftyJSON

let json = JSON(response.result.value)
相关问题