Fasterxml杰克逊映射 - 数据没有正确绑定
问题描述:
我想在浏览器中显示我的JSON,我在JSON中获取数据,但只获取我的表的最后一条记录。继罐存在于我的构建路径,Fasterxml杰克逊映射 - 数据没有正确绑定
- 杰克逊,数据绑定
- 杰克逊核心
- 杰克逊的注解
这里是我的控制器方法
@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);
}
}
其实在数据库表我是五条记录,但在json中,我只获取一条记录数据。
在将实例列表添加到modelMap对象之前的上述方法中,我正在检查列表的大小,它给出了五个,但在我的JSON中它只显示一个记录的数据。
这是我的控制台输出
17:08:08638 INFO [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)
调用。 弹簧将根据每个元素的类名生成列表元素的键。
例如:
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);