Convert string json data to list Object

1. Class:
struct LabourCharge : Codable{
    var ID : Int!
    var CustGroup: String!
    var CalloutFee: Double!
    var IncludedTime : Double!
    var LabourRate: Double!
    var PerTime: Double!
    
    init(id: Int, custGroup: String, calloutFee: Double, includedTime: Double, labourRate: Double, perTime: Double) {
        self.ID = id
        self.CalloutFee = calloutFee
        self.CustGroup = custGroup
        self.IncludedTime = includedTime
        self.LabourRate = labourRate
        self.PerTime = perTime
    }

}


2. Request - Response:
 response json should return like:
(
        {
        CalloutFee = 150;
        CustGroup = Retail;
        Id = 1;
        IncludeTime = 1;
        LabourRate = 30;
        PerTime = "0.25";
    },
        {
        CalloutFee = 200;
        CustGroup = COD;
        Id = 2;
        IncludeTime = 1;
        LabourRate = 30;
        PerTime = "0.25";
    },
        {
        CalloutFee = 150;
        CustGroup = BUS;
        Id = 3;
        IncludeTime = 0;
        LabourRate = 25;
        PerTime = "0.25";
    }

)
 * field names must be the same and the same data type


func LoadLabourCharges(completion : @escaping (Result<[LabourCharge], Error>) -> Void) {
        let token = Utility().getAccessTokenOut();
        let endPoint: String = Constants().baseUrlOut +  Constants().loadLabourCharges
        let param = ["": ""]
        
        Alamofire.request(endPoint, method: .get, parameters: nil, encoding: JSONEncoding.default , headers: ["Authorization":"Bearer " + token, "Content-Type": "application/json"]).responseJSON {
            response in
            
            print("response: \(response)")
            print("response.response?.statusCode: \(response.response?.statusCode)")
            print("response.result.value: \(response.result.value)")
            switch response.result{
            case .success:
                let json = response.data
                do{
                    let decoder = JSONDecoder()
                    let list = try decoder.decode([LabourCharge].self, from: json!)
                    completion(.success(list))
                    return
                    
                }catch (let error){
                    let code = (error as NSError).code
                    print("error.ErrorDecsription: \(error.ErrorDecsription)")
                    print ("code: \(code)")
                    completion(.failure(error.ErrorDecsription))
                    return
                }
                
            case .failure(let error):
                completion(.failure(error.ErrorDecsription))
                return
            }
        }
        return
    }

Comments

Popular posts from this blog

return value to controller caller

Apple Push Notification Service APNS

Delivery In House iOS app