,我有以下代碼示例什麼,我想實現:的Java GSON序列化和內部HashMap的反序列化對象(鍵,對象)
public static void main(String args[]) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("1", new A());
map.put("2", new B());
String json = new Gson().toJson(map);
Type type = new TypeToken<Map<String, Object>>(){}.getType();
map = new Gson().fromJson(json, type);
A a = (A) map.get("1");
B b = (B) map.get("2");
}
static class A {
int inum = 1;
double dnum = 1.0;
String str = "1";
}
static class B {
int inum = 2;
double dnum = 2.0;
String str = "2";
}
下面的代碼導致此異常:
Exception in thread "main" java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to ParseJson$A
at ParseJson.main(ParseJson.java:19)
所以問題是: 如何獲得Gson序列化和反序列化的泛型HashMap中的正確實例?
使用一個類型令牌。將副本應用於「Map」而不是「List」。 – Savior
'Type type = new TypeToken
謝謝。糾正了這個問題。 – Nom1fan