【问题标题】:Parsing data returned from server using Alamofire and SwiftyJSON, what is the data type returned?使用 Alamofire 和 SwiftyJSON 解析从服务器返回的数据,返回的数据类型是什么?
【发布时间】:2017-04-12 07:24:58
【问题描述】:

我希望我能正确地问这个问题: 我正在使用 Alamofire 和 SwiftyJSON 来管理从服务器获取的 JSON 文件。 我在理解 response.result.value 的类型方面遇到问题,如何将其转换为我可以使用 SwiftyJSON 的 JSON(data: data) 构造函数构造它的对象。 这是我使用 Alamofire 请求的代码:

func performRequest() {
    //        parameters["retry_count"] = retryNum
    if let _ = host, let path = path {

        let request = Alamofire.request(HOST + path, method: method, parameters: parameters, headers: headers)
        request.responseJSON { response in

            print("-----")
            print(response.response?.statusCode)
            print("-----")

            // check if responseJSON already has an error
            // e.g., no network connection
            if let json = response.result.value {

                print("--------")
                print(json)
                print("--------")
            }
            guard response.result.error == nil else {
                print(response.result.error?.localizedDescription ?? "Response Error")
                self.completionHandler?(response.result.isSuccess, nil)
                self.retryRequest()
                return
            }

                // make sure we got JSON and it's a dictionary
            guard let json = response.result.value as? [String: AnyObject] else {
                print("didn't get dictionary object as JSON from API")
                self.completionHandler?(response.result.isSuccess, nil)
                self.retryRequest()
                return
            }

            // make sure status code is 200
            guard response.response?.statusCode == 200 else {
                // handle status code

                self.completionHandler?(response.result.isSuccess, nil)
                return
            }

            self.completionHandler?(response.result.isSuccess, json)
            RequestsQueue.sharedInstance.sema.signal()

        }
    }

此打印结果如下:

{
numOfShiftsInDay = 3;
shifts =     (
            {
        endTime = "14:00";
        startTime = "07:30";
    },
            {
        endTime = "20:00";
        startTime = "13:30";
    },
            {
        endTime = "02:00";
        startTime = "19:30";
    }
);

}

此数据类型是[String: AnyObject]

我想用它来构造一个 SwiftyJSON JSON 对象,因为使用 SwiftyJSON 方法解析数据对我来说更容易..

这是我尝试解析然后使用它的代码,但显然它不起作用:

            let json = JSON(data: data)

我得到这个编译错误:

 Cannot convert value of type '[String : AnyObject]?' to expected argument type 'Data'

那我该怎么办呢?

【问题讨论】:

    标签: swift3 alamofire swifty-json


    【解决方案1】:

    您需要使用JSON(data) 而不是JSON(data: data),因为这个init(data:) 想要Data 作为参数。

    换行

    let json = JSON(data: data)
    

    收件人

    let json = JSON(data)
    

    【讨论】:

    • 有效。多么简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2018-11-12
    • 2011-04-02
    • 1970-01-01
    • 2017-03-27
    相关资源
    最近更新 更多