无法使用Gson反序列化具有List的对象

时间:2017-05-04 12:44:44

标签: java gson json-deserialization

我正在尝试将JSON字符串反序列化为Java对象,但我遇到以下异常:

  

在给定类型类java.util.ArrayList

的情况下,JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@306a30c7无法反序列化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,异常消失了。

1 个答案:

答案 0 :(得分:0)

我正在为我自己的问题发布解决方案,因为很多人在像this one这样的Gson反序列化中使用Arraylist时遇到了同样的问题。只需更新Gson版本,即可解决Gson deserialization问题。