我已经看到了这个问题:
Deserializing Generic Types with GSON
但是我的用例有所不同,我需要的只是将json转换为T
,而不是List<T>
或类似名称。
这是我在代码中需要的:
val type: Type = object : TypeToken<T>() {}.type
然后
Gson().fromJson<T>(json, type)
但是它不起作用。它返回LinkedHashMap或类似的东西,但不返回T表示的类。当我将T替换为实际的类类型时,它可以工作,但对于T则不起作用。有人可以给我一些建议吗?谢谢
答案 0 :(得分:2)
只需使用Gson().fromJson(json, T.class);
不需要TypeToken
答案 1 :(得分:0)
我找到了解决方法:
仅使用T::class.java
是不够的,它给了我编译错误:
不能将T用作化类型参数。改用班级
所以我不得不找到解决方案,以解决它。我要做的是从此更改函数名称:
fun <T> myFunction
对此:
inline fun <reified T> myFunction
之后,不显示任何编译错误,并且代码可以正常工作 有关此主题的更多信息在这里: Instantiating generic array in Kotlin
反序列化看起来像这样:
Gson().fromJson(json, T::class.java)