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);
我试图在浏览器中显示我的 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);