使用Gson使用参数化成员字段反序列化参数化类型

时间:2018-01-10 19:49:29

标签: java json generics serialization gson

我想使用Google Gson库来(de)序列化具有参数化成员字段的参数化类型。

该课程如下:

public class Foo<T>{
    List<T> bar;
}

我该怎么做?

我尝试使用TypeToken,如此:

Type type = new TypeToken<Foo<String>>() {}.getType();
gson.fromJson<Foo<String>>(json, type);

这会引发IllegalStateException

1 个答案:

答案 0 :(得分:0)

这篇文章可能会对您有所帮助:Deserializing Generic Types with GSON

TLDR,我为你的课试了一下,你可以使用这段代码反序列化Foo:

GsonBuilder gson = new GsonBuilder();
String json = "{\"bar\":[\"thing1\",\"thing2\"]}";
Foo deserFoo = gson.create().fromJson(json, Foo.class);
System.out.println(deserFoo.bar);

输出[thing1,thing2]