当前位置: 首页 > 知识库问答 >
问题:

具有泛型项Gson分析类

谯德佑
2023-03-14

我有基类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;
}
}

和继承的类RequestAnsModel

public class RequestAnsModel extends WebAnswer<RequestModel> {

}
        Gson gson = new Gson();
        WebAnswer<RequestModel> data = new WebAnswer<RequestModel>();
        data = gson.fromJson(response.toString(),data.getClass());
 WebAnswer<RequestModel> data = new RequestAnsModel();

共有1个答案

仲孙鸿畴
2023-03-14

您应该使用TypeToken,如下面的代码所示:

Gson gson = new Gson();

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

WebAnswer<RequestModel> data = gson.fromJson(response.toString(), type);
 类似资料:
  • 我有这个代码: 我试过这个: 但不管用。这是一个例外:

  • 问题内容: 我有以下代码: 它将字符串转换为对象的。但是,现在我想让它具有在运行时定义的动态类型(而不仅仅是)。 所述的项目类型将与被定义反射。 我尝试了这个: 但这是行不通的。这是例外: 问题答案: 你提出的语法无效。下列 之所以无效,是因为你试图传递期望类型名称的方法调用。 下列 由于泛型(类型擦除)和反射的工作方式,因此无法实现。整个TypeToken黑客工作,因为以下 返回表示该类表示的实

  • 问题内容: 所以我有一张地图: 我会像这样添加元素: 我有如下通用方法: 现在,这段代码可以很好地工作,并且没有编译器问题: 但是,当我尝试这样做时: 编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class) 这让我感到困惑…请帮助… 问题答案: 更改: 至 通过仅将类型声明为“ Class”,就失去

  • 我正在尝试用来自spring WebFlux的WebClient制作一个客户端库。 服务器返回如下JSON所示的响应: 结果字段包含元素数组,这些元素可以根据使用的API而不同。 有关该API的更多信息,请参阅ServiceNow产品中的表API。 正如您在文档中所看到的,API路径如下所示:GET/now/table/{tableName},其中tableName可以是不同的值,tipology

  • 在java 8中创建新代码后,我想清除声纳问题。 我的代码: 声纳说: Lambda应该替换为方法引用。方法/构造函数引用比使用lambda更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。 我想要更改映射(arg-

  • 我试图在一个方法中使用泛型,在这个方法中,我将一个json反序列化为pojo,这样它就可以返回任何对象类型。 这里我的代码: 问题是