簡體   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