使用 GSON 反序列化泛型类型
2022-08-31 15:02:19
我在Android应用程序中实现Json反序列化时遇到了一些问题(使用Gson库)
我像这样上课
public class MyJson<T>{
public List<T> posts;
}
反序列化调用是:
public class JsonDownloader<T> extends AsyncTask<Void, Void, MyJson<T>> {
...
protected MyJson<T> doInBackground(Void... params) {
...
Reader reader = new InputStreamReader(content);
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken<MyJson<T>>() {}.getType();
result = gson.create().fromJson(reader, collectionType);
...
}
}
问题是 result.posts 列表在调用后包含一个 LinkedTreeMap 对象数组(具有正确的值,因此问题是反序列化)而不是 MyJson 对象。当我使用MyObject而不是T时,一切都运行良好,MyObject是正确的。
那么有没有办法在不创建自定义反序列化程序的情况下实现反序列化调用呢?