Gson物件轉成Java複雜物件出錯
阿新 • • 發佈:2018-12-26
程式中有一個複雜的物件資料要儲存起來,我們把這個物件用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());