[ 首頁 / 搜尋 / 管理Discord ] [ Komica首頁 ] [ 跨版面 ] [ 雜談 / / 攝影 / 運動 ] [ 人工智慧 / 程設交流 ] [ 蔚藍檔案 / 英雄聯盟 / 米哈遊 / Minecraft / 魔物獵人 / 勝利女神:妮姬 / Pokémon / 刀劍亂舞 / Unlight ]

/cs/ - 程設交流

Computer science
名稱
Email
主題
回覆
檔案
嵌入
Options
密碼 (用來刪除檔案。)
  • Allowed file types:jpg, jpeg, png, gif, mp4, webm
  • Max filesize is 10 MB.
  • Max image dimensions are 10000 x 10000.
  • You may upload 1 per post.

  [Go to bottom]   [Catalog]   [返回]   [Archive]   [Featured]

File: 1716619473877.jpg (14.03 KB, 120x120, 18avatarmiddleet5.jpg)

ea25fcf3 No.183

最近撞到gson對泛型轉換會炸掉的坑
LinkedTreeMap cannot be cast to xxx
網路上查都只有針對最外層是泛型的時候
用TypeToken<List<xxx>>() {}.type 來解決

但是我用的物件他是裡面有其他泛型的class…
大概像這樣

class A{
int x,y,z
List<B> listB
….
}
class B{
….
List<C> listC
….
}
List<A> listA = gson.fromJson(jsonString, new TypeToken<List<A>>() {}.type )


這弄下去好像只有外層的listA 這部分,跟他底下一些非泛型的部分(xyz)可以直接使用
listB跟listC直接從listA呼叫裡面的東西會爆掉(錯誤內容一樣是LinkedTreeMap cannot be cast to )

目前有想到的方法只有把B跟C額外拉出來再做一次gson的轉換然後set回去…
但是感覺有點太暴力解

class A本身是某個第三方套件的東西我也沒辦法直接改內容
請問有沒有其他更好的方法可以一次完成轉換?

4e679c47 No.184

Java 的泛型是型別抹除
所以無法處理巢狀型別
建議轉成一般的HashMap



[Go to top] [Catalog] [返回][Post a Reply]
刪除貼文 [ ]
[ 首頁 / 搜尋 / 管理Discord ] [ Komica首頁 ] [ 跨版面 ] [ 雜談 / / 攝影 / 運動 ] [ 人工智慧 / 程設交流 ] [ 蔚藍檔案 / 英雄聯盟 / 米哈遊 / Minecraft / 魔物獵人 / 勝利女神:妮姬 / Pokémon / 刀劍亂舞 / Unlight ]