Java gson 数据转换问题求助-
本帖最后由 dmvip 于 2021-5-21 11:54 编辑我现在需要的是把网络返回的json字符串通过Gson转让换成对象(Result就是用户接收数据的类型)
这是我转接口代码
public abstract class HttpCallback<Result> implements ISuccess {
@Override
public void onSuccess(String result) {//result就是网络回来的数据
//result把转换成用户需要的对象
Gson gson = new Gson();
//需要得到用户输入的对象对应的字节码是什么样的
//得到用户接收数据的对象对应的class
Class<?> clz = getSuperClassGenricType(this.getClass(), 0);
Result objResult = (Result) gson.fromJson(result, clz);
//把已经转好的对象,交给用户
onSuccess(objResult);
}
public abstract void onSuccess(Result result);
public static Class getSuperClassGenricType(Class clazz, int index) throws IndexOutOfBoundsException {
Type genType = clazz.getGenericSuperclass();
if (!(genType instanceof ParameterizedType)) {
return Object.class;
}
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
return Object.class;
}
if (!(params instanceof Class)) {
return Object.class;
}
return (Class) params;
}
}
result是 网络返回的json数据:
{
"code": 0,
"data": {
"age": 1,
"name": "test0"
},
"success": true
}
通过Gosn 需要转的Response对象,如果这样是没问题的,可以正常转换,
public class Response {
public int code;
public String msg;
public boolean success;
public DataEntity data;
public class DataEntity {
public String name;
private Integer age;
}
}
我现在需要把 DataEntity 提取出来,放在泛型里面,正常的javaBen 是没有问题 就是加泛型在转的时候报错了,
public class Response<Result> {
public int code;
public String msg;
public boolean success;
public Result data;
}
new HttpCallback<Response<DataEntity>>() {
@Override
public void onSuccess(Response<DataEntity> response) {
}
})
然后我去是现实这个接口就报换错误,跪求大神解答
报错信息:com.google.gson.internal.LinkedTreeMap cannot be cast to xxxxxx public class Response<T> {
public int code;
public String msg;
public boolean success;
public T data;
} javazjl 发表于 2021-5-21 10:47
public class Response {
public int code;
T 和Result 是一样的 就一个占位符 而已 为啥不用fastJSON或者jackson 第三方的用着不香? 打印一下完整的报错信息是什么,对症下药 pojo权限改private,加上get,set试试 泛型没有声明,Result就是个类, 不是泛型
HttpCallback<Result> 这个onSuccess回调返回的是Result类型,不是泛型 leon406 发表于 2021-5-22 10:09
泛型没有声明,Result就是个类, 不是泛型
HttpCallback 这个onSuccess回调返回的是Result类型,不是泛 ...
应该怎么解决呢?
页:
[1]