【发布时间】:2017-10-12 11:13:17
【问题描述】:
我使用 Gson 对 json 进行序列化和反序列化。
pojo 类:
class myData{
public String id;
public String name;
}
并且通过这段代码,我得到了 pojo 类的 json。
public static Object getData(Class clazz) {
String json = "{'name':'john','id':'123'}";
Gson gson = new Gson();
return gson.fromJson(json , clazz);
}
//usage:
myData mdata= (myData) getData(myData.class);
一切都很好,在从 json 读取数组中我有这个方法:
ArrayList<myData> getDatas() {
ArrayList<myData> mdatas = new ArrayList<>();
String json ="[{'name':'john','code':'123'},{'name':'nick','code':'456'}]";
Type listType = new TypeToken<ArrayList<myData>>() {
}.getType();
if (new Gson().fromJson(json, listType) != null) {
return new Gson().fromJson(json, listType);
} else {
return mdatas;
}
}
那个代码很好。但我想在 getDatas 中传递任何类并在 json 中找到该类,然后在结果中返回该类的列表。
类似这样的:
ArrayList<?> getDatas(Class clazz) {
ArrayList<clazz> mdatas = new ArrayList<>(); //this line is the problem
String json = "[{'name':'john','code':'123'},{'name':'nick','code':'456'}]";
//and this line
Type listType = new TypeToken<ArrayList<clazz>>() {
}.getType();
if (new Gson().fromJson(json, listType) != null) {
return new Gson().fromJson(json, listType);
} else {
return mdatas;
}
}
问题是不能在arraylist 中使用匿名类。
ArrayList<clazz> mdatas = new ArrayList<>();
Type listType = new TypeToken<ArrayList<clazz>>() {
有什么方法可以将arraylist 与匿名类一起使用吗?
【问题讨论】:
-
当您尝试您的代码时,您遇到了什么问题?
-
是的,他们是完成它的方法,请检查:stackoverflow.com/questions/18421674/…,只需传递您的 responseString 和您的班级名称,它就会返回您的班级类型列表。
-
@vivekmahajan 的目标是创建将类作为参数传递的方法,并在 json 中找到该类的 pojo 类。
标签: java android generics arraylist gson