2017-05-04 149 views
0

我試圖反序列化JSON字符串轉換成Java對象,但我發現以下異常的有List對象:無法反序列化使用GSON

的JsonDeserializer com.google.gson.DefaultTypeAdapters $ CollectionTypeAdapter @ 306a30c7失敗所給出的類型類java.util.ArrayList到反序列化JSON對象[ 「93」]

我的主要文件:

public static void main(String[] args) throws IOException { 
    String s = "{\"intents\":[\"93\"],\"_id\":\"frequestQueries\"}"; 
    Gson gson = new Gson(); 
    JavaObject a = gson.fromJson(s, JavaObject.class); 
    System.out.println(a); 

Ť他類應代表JSON是:

public class JavaObject { 

    public ArrayList intents; 
    private String _id ; 

    public JavaObject(){ 
     intents = new ArrayList(); 
     intents.add(93); 
     _id = "frequestQueries"; 
    } 
} 

我試圖給出的解決方案SO上有類似異常,但我不能找出確切的原因。我試過this one,但似乎沒有給出具體的解決方案。我的Gson版本是1.4。

編輯:我已經更新了我的Gson到2.8.0,異常消失了。

+0

看起來它不知道'93'的類型;嘗試'public ArrayList intents' – Laazo

+1

GSON 1.4於2010年3月24日發佈,您在定義ArrayList時未使用泛型 - 您使用的是哪個版本的Java? Java <= 4? – nickb

+0

我正在使用java 8。 – chandresh

回答

0

我發佈解決方案給我自己的問題,因爲許多人在使用Arraylist像Gson反序列化像this one遭受同樣的問題。只需更新Gson版本,它會照顧Gson deserialization問題。