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

为什么RestTemboard返回ArrayList而不是模型类型的实际列表?

廖夜洛
2023-03-14

这是一个Springboot项目。代码片段如下所示。在第59行,显示restemplate所需的retrun类型。getForEntity列表

而LinkedHashMap不是模板的子类。我不知道为什么预期结果类型和实际结果类型匹配。

有人能告诉我为什么它不返回ArrayList吗

模板是在我们的项目中定义的模型。

public class Template {
    private String id;
    private String name;
    private String content;

    xxx getters and setters
}

它是调用resttemplate的控制器。

@PostMapping(value = "/getTemplatesByGroup", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public EUDataGrid<Template> getTemplatesByGroup(@RequestParam(defaultValue = "-1") Integer groupId) {
        EUDataGrid<Template> grid = new EUDataGrid<>();

            xxxx
            List<Template> list = restTemplate.getForEntity(urlFullTemplates, ArrayList.class).getBody();
            xxxx

        return grid;
    }

json结果格式如下

[
    {
        "id": 1788,
        "name": "xxxx",
        "content": "xxxxx."
    },
    {
        "id": 1787,
        "name": "xxxxx",
        "content": "xxxx"
    }
]

编辑:

我又在谷歌上搜索了很多关于这个问题的信息。这是一个普遍的问题。有些人也遇到过类似的情况。我在这篇文章的底部添加了链接。

这似乎是RestTemplate正确处理泛型的一个缺陷。有办法解决这个问题。

在这里我想知道,为什么它不抛出异常时restTemboard返回ArrayList

我想通用类型有一些魔力。有人能告诉我更多吗?谢谢。

无法获取一般性响应

在具有泛型参数的泛型方法中使用Spring RestTem板

RestTemplate:如何获取通用列表响应


共有1个答案

西门奇希
2023-03-14

下面是您得到的JSON响应中的问题List

限制查看限制

 getForEntity(URI url, Class<T> responseType)

这将使用GET动词向指定的URI发送请求,并将响应主体转换为请求的Java类型。这对于大多数类来说都非常有效,但它有一个限制:我们无法获得对象列表。

一种方法很简单,只需指定数组类型

Template[] list = restTemplate.getForEntity(urlFullTemplates, Template[].class).getBody();

或者用交换的方式

 类似资料:
  • 我读过这篇文章:java中arrays.aslist(array)与新arraylist (arrays.aslist(ia))之间的差异 当然,包装器上不允许一些列表操作,比如从列表中添加或删除元素,您只能读取或覆盖元素。 如果list2有List接口的引用,我期望它用Java实现List接口中包含的所有方法。https://docs.oracle.com/javase/7/docs/api/j

  • 为什么findElement(By)的返回类型是WebElement? 我知道文档中提到了返回类型是Webelment,但有人能解释一下为什么返回类型是Webelment吗。 我对这个话题的研究。 因为我们使用findElement搜索元素,webelement类用于表示HTML元素。 请让我知道我的想法是否正确或有任何具体原因

  • 问题内容: 我对Python 3中的和类有些困惑。也许有人可以消除我的困惑或提供一些其他信息。 我目前的理解是,每个类(除外)都从称为的基类继承。但是每个类(包括)也是该类的一个实例,它是自身的实例,并且也从继承。 我的问题是: 是否有一个原因/设计决策,为什么是的实例并从中继承?对象的/ class是否也可以是对象本身? 类()如何成为其自身的实例? 哪一个是真正的基类或? 我一直认为这将是最“

  • 我已经能够验证是否会产生排序的。但是,它不会返回列表。为什么?

  • 问题内容: 例如,在以下代码中 返回类型之前的目的是什么(该行的作用或如何读取) 问题答案: 这是使您的 方法 (而不是 类 )通用的语法。 常规类和泛型类的方法可以根据其自身的类型参数进行泛型。在这种情况下,您的方法是on的通用方法,它必须是从扩展的类型。

  • 很多人回答说是一个接口,而是一个实现接口的类。 > 我的困惑是什么实际上实现接口?(我是一个Spring MVC的初学者,所以请耐心等待,您可以参考这篇文章来获得代码提示。Model、ModelMap和ModelandView之间有什么区别? 更有趣的是,我看到有人刚刚使用接口: