gson 类别常值的左手只允许有类别

nlejzf6q  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(175)

我知道在StackOverflow这里有很多类似的问题,但没有一个能解决我的。
我有一个通用数据类:

data class ServiceCall<out T>(val result: T?, val exception: String?, val pagination: String?, val stringResult: String?)

我试着这样使用:

Gson().fromJson(json, ServiceCall<SurveyListModel>::class.java).result

IDE显示错误:类别常值的左手只允许有类别
怎么解决呢?先谢谢了。

voase2hg

voase2hg1#

您不能将泛型与class一起使用,这一点在下面很容易看出:

List<Int>::class.java

要在GSON反序列化中使用泛型类型,请按照下面的建议操作:
https://stackoverflow.com/a/5554296/8073652

编辑:

在Kotlin,它看起来像这样:

val type: Type = object : TypeToken<ServiceCall<SurveyListModel>>() {}.type 
Gson().fromJson<ServiceCall<SurveyListModel>>(json, type).result

这里有一个概念的小证明,我写过:

class Token : TypeToken<List<Int>>()
 val x: List<Int> = Gson().fromJson(Gson().toJson(arrayOf(1)), Token().type)
 println(x)
sdnqo3pr

sdnqo3pr2#

如果有人在Kotlin和Jackson身上寻找答案。

val response = ObjectMapper().convertValue(dataObject, object: TypeReference<Map<String, Any>>(){})

相关问题