arraysswiftswiftuialamofireswifty-json

Cannot assign value of type '[JSON]' to type '[MyStruct]'


I'm learning to use SwiftyJSON and I'm trying to convert the resulted values into an array of MyStruct. However, whenever I try that, it tells me that they are not compatible. How can I convert [JSON] into [MyStruct]?

class TreatmentsManager: ObservableObject {

 @Published var treatments = [Treatment]()
 func testAlamofire() {
  AF.request("http://dermaservice.theappmaster.com/Tratamiento.ashx").response { response in
    switch response.result {
    case .success(let value):
        let json = JSON(value)
        if let treatmentArray = json["Tratamientos"].array {
            self.treatments = treatmentArray
         //[MyStruct] type /= [JSON] type
        }
    case .failure(let error):
        print(error)
    }}}}

Solution

  • Thanks to @VishalPatel, i figured out how to do it:

    class TreatmentsManager: ObservableObject {
    
      @Published var treatments = [Treatment]()
      func testAlamofire() {
        AF.request("http://dermaservice.theappmaster.com/Tratamiento.ashx").response { response in
            switch response.result {
            case .success(let value):
                do {
                    let results = try JSONDecoder().decode(TreatmentList.self, from: value!)
                    DispatchQueue.main.async {
                      self.treatments = results.Tratamientos
                      }
                    } catch {
                    print(error)
                    }
            case .failure(let error):
                print(error)
            }
         }
      }
    }
    

    Where TreatmentList is a struct containing [Treatments]. So there is not need to use SwiftyJSON