I have some problems with implementation of Json Deserialization in my Android application (with Gson library)
I\'ve made class like this
public clas
You have to specify the type of T at the time of deserialization. How would your List of posts get created if Gson didn't know what Type to instantiate? It can't stay T forever. So, you would provide the type T as a Class parameter.
Now assuming, the type of posts was String you would deserialize MyJson as (I've also added a String json parameter for simplicity; you would read from your reader as before):
doInBackground(String.class, "{posts: [\"article 1\", \"article 2\"]}");
protected MyJson doInBackground(Class type, String json, Void... params) {
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken>(){}.getType();
MyJson myJson = gson.create().fromJson(json, collectionType);
System.out.println(myJson.getPosts()); // ["article 1", "article 2"]
return myJson;
}
Similarly, to deserialize a MyJson of Boolean objects
doInBackground(Boolean.class, "{posts: [true, false]}");
protected MyJson doInBackground(Class type, String json, Void... params) {
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken>(){}.getType();
MyJson myJson = gson.create().fromJson(json, collectionType);
System.out.println(myJson.getPosts()); // [true, false]
return myJson;
}
I've assumed MyJson for my examples to be as
public class MyJson {
public List posts;
public List getPosts() {
return posts;
}
}
So, if you were looking for to deserialize a List you would invoke the method as
// assuming no Void parameters were required
MyJson myJson = doInBackground(MyObject.class);