java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to anindya.fb.datamodel.Datum
GSON類型轉換錯誤
我有一個HashMap
:
static HashMap<String, Datum> favoriteList = new HashMap<>();
,我把它寫入GSON下列方式:
String json = gson.toJson(favoriteList);
mEditor.putString(PREF_FAVORITE, json);
mEditor.commit();
,並得到它像這樣:
gson = new Gson();
String json = mPref.getString(PREF_FAVORITE, "");
if (json.equals(""))
favoriteList = new HashMap<>();
else
favoriteList = gson.fromJson(json, HashMap.class);
發送回此HashMap
基於價值的一部分,我這樣做:
ArrayList<Datum> data = new ArrayList<>();
for(String key: favoriteType.keySet()) {
if(favoriteType.get(key).equals(type)) { //type is a parameter to this method
data.add(favoriteList.get(key));
}
}
return data;
然而,當我試圖訪問這個數據,我得到這個錯誤:
final Datum curData = data.get(position);
給出了一個錯誤:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to anindya.fb.datamodel.Datum
我碰到一些提到在proguard
文件中增加行的帖子。
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
但這並沒有解決錯誤。任何幫助,將不勝感激。
謝謝。我在腦子裏徘徊了一天! :/ –
不用擔心我曾經咬過我一千次。 – JakeWilson801