GSON反序列化到ArrayList <t>无法正常工作</t>

时间:2014-04-24 08:11:46

标签: java json deserialization gson json-deserialization

我有一个对象的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.
    }

1 个答案:

答案 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());