繁体   English   中英

使用GSON反序列化通用类型

[英]Deserializing Generic Type with GSON

我已经看过这个问题了:

使用GSON反序列化通用类型

但是我的用例不同,我需要的只是将json转换为T ,而不是List<T>或类似的东西。这是我在代码中需要的:

 val type: Type = object : TypeToken<T>() {}.type

接着

Gson().fromJson<T>(json, type)

但这不起作用。 它返回LinkedHashMap或类似的东西,但不返回T表示的类。当我将T替换为实际的类类型时,它可以工作,但对于T则不起作用。 有人可以给我一些建议吗? 谢谢

只需使用Gson().fromJson(json, T.class); 无需TypeToken

我找到了解决方案:仅使用T::class.java是不够的,它给了我编译错误:

不能将T用作化类型参数。 使用班级代替

因此,我不得不找到解决方案,以解决它。 我要做的是从此更改函数名称:

fun <T> myFunction

对此:

inline fun <reified T> myFunction

之后,不会显示任何编译错误,并且代码可以在此处提供有关此主题的更多信息: 在Kotlin中实例化通用数组

反序列化看起来像这样:

 Gson().fromJson(json, T::class.java)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM