2014-04-24 74 views
0

我有一個ArrayList的對象(tweet是我在包中定義的一個類)。現在,我已經使用GSON將此ArraList作爲JSON對象寫入文件。繼續前進,我正在使用GSON將這個JSON對象讀入一個ArrayList。但是,當我遍歷這個新讀取的ArrayList時,我無法將其重新轉換爲tweet對象。儘管ArrayList本身實際上是一個tweet對象的集合。我得到的例外是: com.google.gson.internal.LinkedTreeMap不能轉換鳴叫GSON反序列化ArrayList <T>不工作

contents_array_tweets是鳴叫對象的ArrayList。

contents_array也被聲明爲推文對象的數組列表。

下面是代碼:

f.write_file("Content_Array_JSON_full.json", gson.toJson(ob.contents_array_tweets), false); 

ob.read_file("Content_Array_JSON_full.json",f); 
ob.contents_array = gson.fromJson(ob.file_contents, ArrayList.class); 
for(i=0; i<ob.contents_array.size(); i++){ 
     stn_1 = ob.contents_array.get(i).stemmed_nouns; 
     ob.contents_array.get(i).sim_tw = new HashMap<Integer, Double>(); 
//This is where I get the exception. I am not able to access stemmed_nouns and sim_tw which are class variables of tweet. 
    } 
+0

請,刪除所有的代碼,這是**不需要**瞭解問題;顯示代碼的非工作部分。 –

回答

2
ob.contents_array = gson.fromJson(ob.file_contents, ArrayList.class); 

取而代之的是原ArrayList.class你應該使用TypeToken告訴GSON ArrayList的類型參數的實際運行時類型:

ob.contents_array = gson.fromJson(ob.file_contents, 
    new TypeToken<ArrayList<tweet>>(){}.getType());