Невозможно использовать SwiftyJSON для доступа к данным JSON - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь получить доступ к некоторым данным JSON, но не могу получить к ним доступ, используя swiftyJSON. Я получаю ответ в формате JSON, поэтому получаю его с помощью alamofire. Вот JSON:

{"groupID":"6","groupName":"Test","teacher":"teacher1 
","teacherID":"13","Locations": 
[{"locationID":"5","locationName":"field"}, 
{"locationID":"6","locationName":"34th"}],"Error":""}

Я использую операторы print для устранения ошибок Вот код, который я пытаюсь использовать:

                    let json = JSON(response.result.value ?? "error")
                    //let jsonError = json["Error"]
                    print("=================<JSON RESPONSE>=================");
                    print(json)
                    print("=================</JSON RESPONSE/>=================");

                    self.groupID = json["groupID"].stringValue
                    self.groupName = json["groupName"].stringValue
                    self.teacherID = json["teacherID"].stringValue
                    let locjson = json["Locations"]


                    print("Entering LocJSON Loop")
                    print("=================<LOCJSON >=================");
                    print("GNAME:" +  self.groupID)
                    print("TID: " + json["teacherID"].stringValue)
                    print("Locjson.stringalue: " + locjson.stringValue)


                    //print("LocationJSON" + json["Locations"]);
                    print("=================</LOCJSON/>=================");

                    for (key, object) in locjson {
                        print("In LocJSON Loop")
                        let locationIDVar: Int? = Int(key)
                        self.locations[locationIDVar!].locationID = locationIDVar!
                        self.locations[locationIDVar!].locationName = object.stringValue
                        print(self.locations[locationIDVar!].locationName)
                        print(object);
                    }

Вот вывод из консоли, который соответствует операторам печати. ​​

=================<JSON RESPONSE>=================
{"groupID":"6","groupName":"Test","teacher":"Teacher1"         
,"teacherID":"13","Locations": 
[{"locationID":"5","locationName":"field"}, 
{"locationID":"6","locationName":"34th"}],"Error":""}
=================</JSON RESPONSE/>=================
Entering LocJSON Loop
=================<LOCJSON >=================
GNAME:
TID: 
Locjson.stringalue: 
=================</LOCJSON/>=================

Кроме того, как мне добраться до нескольких мест, которые находятся внутри «Местоположений»?

1 Ответ

0 голосов
/ 05 июля 2018

Значение ключа Locations - это массив, содержащий словари.

    let locjson = json["Locations"].arrayValue
    for location in locjson {
        let locID = location["locationID"].stringValue
        let locName = location["locationName"].stringValue
        print(locID, locName)
    }

В Swift 4 я бы предпочел Decodable, а не SwiftyJSON, потому что вы можете напрямую декодировать в структуры.

...