我在我的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是正确的。
因此,是否有任何方法可以实现反序列化调用而不创建自定义反序列化程序?
MyJson
而不是MyJson
时,你的意思是什么? - John BGsonBuilder
来获取Gson
实例,而不是直接使用new Gson.fromJson
。这个构造器可能会带来什么好处? - SebasSBMGsonBuilder
有一个registerTypeAdapter
方法,用于实现自定义类型的反序列化器。 - Peter Schorn