【发布时间】:2013-08-26 04:20:52
【问题描述】:
在我的 Android 应用程序(使用 Gson 库)中实现 Json 反序列化时遇到一些问题
我做过这样的课
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 是正确的。
那么有没有什么方法可以在不创建自定义反序列化器的情况下实现反序列化调用呢?
【问题讨论】:
-
When I use MyJson instead of MyJson是什么意思 -
嘿,我的意思是 MyJson 而不是 T 对不起
-
我很想知道你为什么使用
GsonBuilder来获取Gson实例,而不是直接使用new Gson.fromJson。从这个建设者那里可以获得什么样的好处? -
@SebasSBM
GsonBuilder有一个registerTypeAdapter方法是实现类型的自定义反序列化器所必需的。
标签: java android json deserialization gson