'The data couldn’t be read because it isn’t in the correct format error

Hi guys I am trying get request when my model class like first I can get data but with second model I can get this error message "The data couldn’t be read because it isn’t in the correct format " please help me.

MODEL 1 with that I can reach data

struct Rocket:  Codable  {
    
    let id : Int
    
        let  rocketID, rocketName, rocketType: String
      
        enum CodingKeys: String, CodingKey {

            case id = "id"
            case rocketID = "rocket_id"
            case rocketName = "rocket_name"
            case rocketType = "rocket_type"
        }

    }

}

MODEL 2

with that I can't reach data, I get error

struct Rocket:  Codable  {
    
    
       
    let id : Int
    let firstStage: FirstStage
        let  rocketID, rocketName, rocketType: String
      
        enum CodingKeys: String, CodingKey {
  
            case id = "id"
            case firstStage = "first_stage"
            case rocketID = "rocket_id"
            case rocketName = "rocket_name"
            case rocketType = "rocket_type"
        }
    }

struct FirstStage: Codable {

    let fuelAmountTons: Int
    let burnTimeSEC: Int

    enum CodingKeys: String, CodingKey {
        case fuelAmountTons = "fuel_amount_tons"
        case burnTimeSEC = "burn_time_sec"
          
    }
}

NetworkManager

import Foundation
import Alamofire

typealias Success<T : Codable> = (BaseResponse<T>) -> Void
typealias Error = (BaseError) -> Void

final class NetworkManager: INetworkManager {

    var config: NetworkConfig


    required init(config: NetworkConfig) {
        self.config = config
    }

    func fetch<T>(path: NetworkPath, paramaters: [String: String]?,
                  method: HTTPMethod,
                  onSuccess: @escaping (BaseResponse<T>) -> Void, onError: @escaping Error) where T: Decodable, T: Encodable {

        AF.request(url(path),
                   method: method,
                   parameters: paramaters

        ).validate().responseDecodable(of: T.self)
        { (response) in
            guard let model = response.value else {
                onError(BaseError(afError: response.error))
                return
            }
            onSuccess(BaseResponse.init(model: model, message: ""))
        }
    }

    func url(_ path: NetworkPath) -> String
    {
        return config.baseUrl
        //+ path.firebasePath()
    }
}

ROCKET SERVİCE

class RocketService {
    let service: INetworkManager
    
    init(service: NetworkService) {
        self.service = service.manager
    }
    func getAllRockets(onSucess: @escaping ([Rocket]) -> Void, onError: @escaping(BaseError) -> Void) {
        
        service.fetch(path: .rockets, paramaters: nil, method: .get, onSuccess: { (response: BaseResponse<[Rocket]>) in
            guard let rockets = response.model else {
                onError(BaseError(message: "Not Found"))
                return
            }
            onSucess(rockets)
            print("başarılı")
        }) { (error) in
            onError(error)
            print("asdasda")
        }
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source