我有以下课程:
public static class TestSomething {
Integer test;
public TestSomething(Integer test) {
this.test = test;
}
// getter and setter for test
}
好的,现在创建这个类的集合并用 Gson 序列化它:
Collection<TestSomething> tests = Arrays.asList(
new TestSomething(1),
new TestSomething(2),
new TestSomething(3)
);
String json = new Gson().toJson(tests, new TypeToken<Collection<TestSomething>>() {}.getType());
在此之后,字符串json
设置为
[{"test":1},{"test":2},{"test":3}]
这是伟大的。
但是现在,我所有的模型类都继承自一个泛型类型Identifiable<T>
,它只提供两种方法T getId()
和void setId(T)
. 所以我将TestSomething
-class 从上面更改为
public static class TestSomething extends Identifiable<Long> {
// same as above
}
当我尝试解决这个问题时Gson.toJson()
,Gson 会出现以下异常:
java.lang.UnsupportedOperationException: Expecting parameterized type, got class path.to.TestSomething.
Are you missing the use of TypeToken idiom?
See http://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Gener
at com.google.gson.TypeInfoFactory.getActualType(TypeInfoFactory.java:97)
...
那么,我该怎么做才能完成这项工作?