本文通过3个问题来讨论如何使用GSON把JSON反序列化为List。
问题1
有这样两个类:
class MyObj {
int x;
}
class MyList {
List<MyObj> objList = new LinkedList<>();
}
那下面的测试能通过吗?
@Test
public void test1() {
MyList myList = new Gson().fromJson("{objList:[]}", MyList.class);
Assert.assertEquals(LinkedList.class, myList.objList.getClass());
}
答案1
答案是,测试通不过!原因是GSON不知道objList的具体类型,因此只能选择默认的ArrayList。更详细的解释,可以参考这篇文章和ConstructorConstructor类的源代码。如果确实想让GSON创建LinkedList实例该怎么办呢?也简单,就是给objList一个更具体的