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

返回和强制转换ResponseEntity

景子安
2023-03-14

我试图返回一个responseEntity列表,并将该响应重定向到我的模型类。

例如:如果我使用responseEntity ionmodel> > ,它工作得很好,但我不想为每个模型编写响应方法。

ResponseEntity方法

    public static <T> ResponseEntity<List<T>> getResponseList(String resourceURL) {
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

    HttpEntity<List<T>> entity = new HttpEntity<List<T>>(headers);
    ResponseEntity<List<T>> response = restTemplate.exchange(resourceURL, HttpMethod.GET, entity,
            new ParameterizedTypeReference<List<T>>() {
            }, Collections.emptyMap());

    return response;
}
    private final String url ="http://localhost:8090/xxx/application";

    ResponseEntity<List<ApplicationModel> responseForApplications =
 ResponseTemplate.getResponseList(url);

    if (responseForApplications.getStatusCode() == HttpStatus.OK) 
         List<ApplicationModel> dtoApplications = responseForApplications.getBody();

错误

出现错误(Type=内部服务器错误,状态=500)。创建名为“index”的bean时出错:调用init方法失败;嵌套异常为java.lang.ClassCastException:java.util.LinkedHashMap不能强制转换为com.xxx.ApplicationModel

共有1个答案

怀德馨
2023-03-14

问题来自杰克逊。当它没有足够的关于要反序列化到哪个类的信息时,它使用LinkedHashMap。

由于您没有通知Jackson您的ArrayList的元素类型,它不知道您要反序列化为ApplicationModels的ArrayList。所以它会回到默认值。

相反,您可能可以使用as(jsonNode.class),然后以比rest-assured允许的更丰富的方式处理ObjectMapper。

 类似资料:
  • 我尝试通过methodhandles将方法链接在一起,其中一些方法来自泛型类型。如果函数返回泛型类型,我必须为MethodType指定Object.Class,但我看不到将其转换回泛型类型参数类型的简单方法。在大多数情况下,这没有问题,因为invoke似乎自动转换它们,但我必须创建mhs,它可以用InvokeExact运行。难道没有简单的方法使用MethodHandles进行强制转换吗? 我的测试

  • 我正在尝试为我正在使用Inno Setup Compiler 5.5.1制作的安装程序编写一些Pascal脚本。我目前正在尝试添加一个执行命令的自定义向导页面,从文本字段(TEdit 组件)中获取用户输入。我定义了 NextButtonClick 函数,它检查页面 ID 是否是我定义的自定义页面,并尝试从字段中检索用户输入。当我从页面的 Surface 属性的组件中获取它时,它会作为 TCompo

  • 那么谁能解释一下这里的区别是什么,为什么java会做这样的设计呢?多谢了。 编辑:一个类似的问题

  • 有没有一种简单的方法可以做到这一点: 编辑:我写了一份正确答案的工作副本:

  • 隐含的强制转换 隐含的 强制转换是指这样的类型转换:它们是隐藏的,由于其他的动作隐含地发生的不明显的副作用。换句话说,任何(对你)不明显的类型转换都是 隐含的强制转换。 虽然 明确的 强制转换的目的很明白,但是这可能 太过 明显 —— 隐含的 强制转换拥有相反的目的:使代码更难理解。 从表面上来看,我相信这就是许多关于强制转换的愤怒的源头。绝大多数关于“JavaScript强制转换”的抱怨实际上都

  • 明确的强制转换 明确的 强制转换指的是明显且明确的类型转换。对于大多数开发者来说,有很多类型转换的用法可以清楚地归类于这种 明确的 强制转换。 我们在这里的目标是,在我们的代码中指明一些模式,在这些模式中我们可以清楚明白地将一个值从一种类型转换至另一种类型,以确保不给未来将读到这段代码的开发者留下任何坑。我们越明确,后来的人就越容易读懂我们的代码,也不必费太多的力气去理解我们的意图。 关于 明确的