JSON в быстром разборе вложенных объектов - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть два класса с файлом JSON. Я хотел бы знать, как я могу разобрать вложенный объект в JSON. Первый класс - это класс person с именем и массивом фамилии. Массив псевдонимов может быть ноль. Второй класс - это класс pastname, содержащий список псевдонимов в виде строк.

...code...

func Parse(jsonObject: [Any]?){

        //setting to correct varaible
        guard let json = jsonObject
            else{print("Error"); return}

        for items in json{
            guard let obj = items as? [String:Any],
            let name = obj["names"] as? String,
            //Error occurs here. How do i access the second level?
            let nicknames = obj["nicknames"] as? [PastNames]
            else{continue}
        }
}

//class one

    class Person{
        var name: String
        var pastNickNames: [PastNames]

        //initializers
        init(name: String, pastNickNames: [PastNames] = [PastNames]()){
            self.name = name
            self.pastNickNames = pastNickNames
        }
    }

//class two 
class PastNames{
    var nicknames: [String]!

    init(nicknames: [String]!){
        self.nicknames = nicknames
    }
}

...json...
[
  {
    "name": "Chris Hamilton",
    "nicknames": [      
          "Snitch",
          "SourFace",
          "DumbDumb",
          "Giganta",
          "McGag"     
    ]
  }
]

1 Ответ

1 голос
/ 02 ноября 2019

Вам нужно

struct Root: Codable {
   let name: String
   let nicknames: [String]?
}

do {
    let res = try JSONDecoder().decode([Root].self,from:data)
    print(res)
  }
  catch {
    print(error)
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...