1. 程式人生 > >Gson物件轉成Java複雜物件出錯

Gson物件轉成Java複雜物件出錯

程式中有一個複雜的物件資料要儲存起來,我們把這個物件用GSON轉成字串,然後直接存進資料庫的一個CLOB欄位作為持久化。下次使用的時候,直接取出,然後藉助GSON轉成Java物件,對於簡單的Java物件,GSON的互轉都是沒有問題的。但是我的這個結構巢狀層級有點多,Java資料型別是:

Map<String, Collection<LinkedHashMap<String, String>>>

在使用

new Gson().fromJson(advData.getDataString(), Map.class);

轉成Java物件的時候就報了:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap

Google了一陣子,網友給出的方案是:
Map<String, Collection<LinkedHashMap<String, String>>> advDataMap = new Gson().fromJson(advData.getDataString(), new TypeToken<Map<String, Collection<LinkedHashMap<String, String>>>>() {}.getType());