您必须
T在反序列化时指定的类型。如果不知道要实例化什么,将如何创建您
List的?它不会永远存在。因此,您将提供类型作为参数。
posts``Gson``Type``T``T``Class
现在假设,类型
posts是
String你会反序列化
MyJson<String>的(我还添加了一个
Stringjson用于简单的参数,你会从你读
reader如前):
doInBackground(String.class, "{posts: ["article 1", "article 2"]}");protected MyJson<T> doInBackground(Class<T> type, String json, Void... params) { GsonBuilder gson = new GsonBuilder(); Type collectionType = new TypeToken<MyJson<T>>(){}.getType(); MyJson<T> myJson = gson.create().fromJson(json, collectionType); System.out.println(myJson.getPosts()); // ["article 1", "article 2"] return myJson;}
同样,反序列
MyJson化
Boolean对象
doInBackground(Boolean.class, "{posts: [true, false]}");protected MyJson<T> doInBackground(Class<T> type, String json, Void... params) { GsonBuilder gson = new GsonBuilder(); Type collectionType = new TypeToken<MyJson<T>>(){}.getType(); MyJson<T> myJson = gson.create().fromJson(json, collectionType); System.out.println(myJson.getPosts()); // [true, false] return myJson;}
我假设
MyJson<T>我的例子是
public class MyJson<T> { public List<T> posts; public List<T> getPosts() { return posts; }}
因此,如果您要反序列化a
List<MyObject>,则可以将该方法调用为
// assuming no Void parameters were requiredMyJson<MyObject> myJson = doInBackground(MyObject.class);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)