Fasterxml Jackson 映射 - 数据未正确绑定

Fasterxml Jackson mapping - Data is not binding properly

我试图在浏览器中显示我的 JSON,我在 JSON 中获取数据,但只获取 table 的最后一条记录。以下罐子存在于我的构建路径中,

这是我的控制器方法

  @RequestMapping("/viewDashboard")
    @ResponseBody
    public ModelMap test(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestParam String name) {

        ModelMap modelMap = new ModelMap();
        List<Instances> instances = viewDashboardServiceImpl.viewDashboard();
        log.info(instances.size());
        return modelMap.addAllAttributes(instances);

    }
}

实际上在数据库中table我有5条记录,但在json中我只得到一条记录数据。

在上面的方法中,在将实例列表添加到 modelMap 对象之前,我检查了列表的大小,它给出了五个,但在我的 JSON 中,它只显示了一个记录的数据。

这是我的控制台输出

17:08:08,638 信息 [com.mac.controller.DashboardController] (http--127.0.0.1-808 0-1) 实例列表的大小:5

这是我的 JSON

{"instances":{"id":5,"instanceName":".net","applications":{"id":3,"name":">net","ownerName":"Mou","version":"3kmnc"},"environments":{"id":2,"name":"IST","ownerName":"Mou","version":"1.23.asd"},"version":"2.3as"}}

提前致谢。

看来这里真正的问题是 modelMap.addAllAttributes(instances) 调用。 Spring 将根据每个元素的类名为您的列表元素生成键。

例如:

List<String> list = Arrays.asList("x", "y", "z");

ModelMap m = new ModelMap();
m.addAllAttributes(list);

这里的 ModelMap 将包含一个条目,其属性名称为 "string",属性值为 "z""x""y" 不会出现在地图中,因为每个生成的属性名称都是 "string",最后一个获胜。

要解决此问题,只需在将它们添加到 modelMap 时为 instances 集合指定一个属性名称即可:

modelMap.addAttribute("myInstances", instances);