LinkedTreeMap не может быть приведен к модели kotlin - PullRequest
0 голосов
/ 28 января 2020

Здравствуйте, я хочу создать базовый класс вызова веб-службы. Я пытаюсь автоматически конвертировать модели, но не могу

моя функция

fun <T> callService(callback: (String, T?) -> Unit, url: String, body: Any?, isSharedApi: Boolean = false) {
        configureRequest(url, body, isSharedApi).enqueue(object : Callback {

            override fun onFailure(call: Call, e: IOException) {
                callback(Utils.failedNetworkMessage, null)
            }

            override fun onResponse(call: Call, response: Response) {
                try {
                    val gson = GsonBuilder()
                    val collectionType = object : TypeToken<BaseResponse<T>>(){}.type
                    val resp = gson.create().fromJson<BaseResponse<T>>(response?.body()?.string()!!, collectionType)

                    if (resp.status != "success") {
                        callback(resp.error, null)
                    } else {
                        callback("", resp.data)
                    }
                } catch (e: Throwable) {
                    callback(Utils.failedStatic, null)
                }
            }
        })
    }

мой базовый класс ответа

data class BaseResponse<T>(val status: String,
                      val error: String,
                   var data: T)

и я получаю эту ошибку, когда попробуйте этот код

com.google.gson.internal.LinkedTreeMap не может быть приведен к com.inte c .tabletmenu.Data.Models.Auth

вызов этой службы подобным образом, если я отправляю в службу, подобную этой, callService работает, но с параметром класса не работает

callService<Auth>({ i, data ->
            if (data != null) saveData(data, authKey)
            callback(i)
        }, WebServices.Account, loginModel, true)

что именно я должен делать?

базовые свойства ответа всегда будут постоянными только при изменении свойства данных, спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...