2017-05-04 119 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问题。