Kotlin Code
class ResponseBody<T> {
var code : Int = 0
var msg : String = ""
var data : T? = null
}
class ExampleT {
var text: String = ""
// var list: List<String>? = null
}
// utils fun
fun <T> request(json : String) : ResponseBody<T>? {
val gson = Gson()
var responseBody: ResponseBody<T>? = null
if (json.contains("code") && json.contains("data")) {
responseBody = gson.fromJson(json, object : TypeToken<ResponseBody<T>>() {}.type)
} else {
val tdata : T = gson.fromJson(json, object : TypeToken<T>() {}.type)
responseBody = ResponseBody()
responseBody.code = 200
responseBody.msg = "success"
responseBody.data = tdata
}
return responseBody
}
// main
val json : String = "{\"code\":200,\"msg\":\"success\",\"data\":{\"text\":\"text text text\"}}"
// val json : String = "{\"text\":\"text text text\"}"
val responseBody : ResponseBody<ExampleT> = request(json)
result error
ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to ExampleT
How can I modify my code to fix this?