最近撞到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本身是某個第三方套件的東西我也沒辦法直接改內容
請問有沒有其他更好的方法可以一次完成轉換?