Проблема с сериализацией и выборкой значений json - PullRequest
0 голосов
/ 17 января 2019

У меня есть данные в JSON, и я хочу получить данные из структуры, как показано ниже - я хочу получить значение времени, в данном случае String: "04:35:00" и добавить все эти значения времени в мою модель часов.

{
"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 голосов
/ 17 января 2019

У вас более сложная структура 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
            }
        }
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...