json序列化和获取值问题

时间:2019-01-17 03:51:47

标签: json swift serialization

我有JSON数据,我想从下面的结构中获取数据-我想获取时间值,在这种情况下为String:“ 04:35:00”并将所有这些时间值附加到我的Hours模型中。

{
"result": [
    {
        "values": [
            {
                "value":"null",
                "key":"symbol_2"

            },
            {
                "value":"null",
                "key":"symbol_1"},
            {
                "value":"016",
                "key":"company"

            },
            {
                "value":"QUW12DO",
                "key":"direction"

            },
            {
                "value":"TD-4WYS",
                "key":"road"

            },
            {
                "value":"04:35:00",
                "key":"time"

}]},

//通过如下代码:

URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in



        if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {

            print(jsonObj!.value(forKey: "result")!)

            if let stopsArray = jsonObj!.value(forKey: "result") as? NSArray {

                    for stop in stopsArray{


                        if let stopDict = stop as? NSDictionary {


                            let hours = stopDict.value(forKey: "time")

                            let myModel = Hours(hours: hours as? String)
                            self.list.append(myModel)
                            print("LIST: \(self.list)")

                            DispatchQueue.main.async {
                                self.actInd.stopAnimating()
                                self.actInd.isHidden = true
                                self.containerLittle.isHidden = true
                                self.loadingView.isHidden = true
                            }
                        }
                    }

            }
        }
    }).resume()

此刻,当我将代码附加到模型时,到处都是零。如何获取时间值进行建模?

1 个答案:

答案 0 :(得分:1)

您拥有更复杂的JSON结构。您的JSON是包含字典数组的字典数组。尝试以下代码:


    typealias JSONDict = Dictionary<String, Any>
    typealias JSONArray = Array<Any>

    if let result = jsonObj?["result"] as? JSONArray {
        for case let value as JSONDict in result {
            if let values = value["values"] as? JSONArray {
                for case let value as [String : String] in values {
                    if let timeString = value["value"], value["key"] == "time" {
                        // Create your Hours model
                        print(timeString)

                        // Use break only if you have single "time" member in "values" array
                        //break
                    }
                }

                // Use break only if you have single "values" member in "result" array
                //break
            }
        }
    }