Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带泛型项的Gson解析类_Java_Android_Gson - Fatal编程技术网

Java 带泛型项的Gson解析类

Java 带泛型项的Gson解析类,java,android,gson,Java,Android,Gson,我有基类WebAnswer public class WebAnswer<T> { private int id; private T result; private ErrorModel error; public int getId() { return id; } public void setId(int id) { this.id = id; } public T getResult() { return result; } public

我有基类WebAnswer

public class WebAnswer<T> {

private int id;
private T result;
private ErrorModel error;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public T getResult() {
    return result;
}

public void setResult(T result) {
    this.result = result;
}

public ErrorModel getError() {
    return error;
}

public void setError(ErrorModel error) {
    this.error = error;
}
}
公共类WebAnswer{
私有int-id;
私人T结果;
私有错误模型错误;
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共T getResult(){
返回结果;
}
公共无效设置结果(T结果){
this.result=结果;
}
public ErrorModel getError(){
返回误差;
}
public void setError(ErrorModel错误){
this.error=错误;
}
}
和继承的类模型

public class RequestAnsModel extends WebAnswer<RequestModel> {

}
公共类RequestAnsModel扩展WebAnswer{
}
我需要用Gson反序列化JSON对象,在代码中我是这样做的:

        Gson gson = new Gson();
        WebAnswer<RequestModel> data = new WebAnswer<RequestModel>();
        data = gson.fromJson(response.toString(),data.getClass());
Gson-Gson=new-Gson();
WebAnswer数据=新的WebAnswer();
data=gson.fromJson(response.toString(),data.getClass());
在字段结果中,我得到了对象数组com.google.gson.internal.LinkedTreeMap$Node@. 但是当我做这样的事情时

 WebAnswer<RequestModel> data = new RequestAnsModel();
WebAnswer data=newrequestansmodel();

我得到了正确的模型,其中结果是RequestModel的对象。是否有任何方法可以在gson中实现类似这样的愿望,而不创建继承类而正确使用Generic?

您应该使用下面代码中的TypeToken:

Gson gson = new Gson();

Type type = new TypeToken<WebAnswer<RequestModel>>() {
}.getType()

WebAnswer<RequestModel> data = gson.fromJson(response.toString(), type);
Gson-Gson=new-Gson();
Type Type=new-TypeToken(){
}.getType()
WebAnswer data=gson.fromJson(response.toString(),type);

您应该像下面的代码一样使用TypeToken:

Gson gson = new Gson();

Type type = new TypeToken<WebAnswer<RequestModel>>() {
}.getType()

WebAnswer<RequestModel> data = gson.fromJson(response.toString(), type);
Gson-Gson=new-Gson();
Type Type=new-TypeToken(){
}.getType()
WebAnswer data=gson.fromJson(response.toString(),type);

检查此项:@SuhasB-TypeToken将在case new-TypeToken(){}.getType()中工作,但在这种情况下new-TypeToken(){}.getType()将不工作。getType()检查此项:@SuhasB-TypeToken将在case new-TypeToken(){}.getType()中工作,但在这种情况下new-TypeToken(){}.getType()将不工作