我有一个对象的ArrayList(tweet是我在我的包中定义的一个类)。现在,我已使用GSON将此ArraList作为JSON对象写入文件。继续,我现在使用GSON将此JSON对象读入ArrayList。但是,当我遍历这个新读取的ArrayList时,我无法将其强制转换为tweet对象。尽管ArrayList实际上是tweet对象本身的集合。我得到的例外是: com.google.gson.internal.LinkedTreeMap无法投放到推文
contents_array_tweets是推文对象的arraylist。
contents_array也被声明为推文对象的arraylist。
以下是代码:
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);
您应该使用TypeToken
来告诉Gson ArrayList的类型参数的实际运行时类型,而不是原始ArrayList.class
:
ob.contents_array = gson.fromJson(ob.file_contents,
new TypeToken<ArrayList<tweet>>(){}.getType());