RintoAndrews
7/27/2019 - 5:03 PM

differntModelJsonStructure.swift

struct UserInfo {
    var userId: String
    var jobTitleName: String
    var firstName: String
    var lastName: String
    var preferredFullName: String
    var employeeCode: String
    var region: String
    var phoneNumber: String
    var emailAddress: String
    var salary: Double
    
    enum CodingKeys: String, CodingKey {
        case userId
        case jobTitleName
        case preferredFullName
        case employeeCode
        case region
        case phoneNumber
        case emailAddress
        case salary
        case name
    }
    
    enum NameKeys: String, CodingKey {
        case firstName
        case lastName
    }
}


extension UserInfo: Decodable {
    init(from decoder: Decoder) throws {
        
        let values = try decoder.container(keyedBy: CodingKeys.self)
        
        userId = try values.decode(String.self, forKey: .userId)
        jobTitleName = try values.decode(String.self, forKey: .jobTitleName)
        preferredFullName = try values.decode(String.self, forKey: .preferredFullName)
        employeeCode = try values.decode(String.self, forKey: .employeeCode)
        region = try values.decode(String.self, forKey: .region)
        phoneNumber = try values.decode(String.self, forKey: .phoneNumber)
        emailAddress = try values.decode(String.self, forKey: .emailAddress)
        salary = try values.decode(Double.self, forKey: .salary)
        
        let name = try values.nestedContainer(keyedBy: NameKeys.self, forKey: .name)
        firstName = try name.decode(String.self, forKey: .firstName)
        lastName = try name.decode(String.self, forKey: .lastName)
    }
}