java - Fasterxml Jackson 映射 - 数据未正确绑定(bind)

标签 java json spring jackson fasterxml

我正在尝试在浏览器中显示我的 JSON,我正在获取 JSON 格式的数据,但只获取表的最后一条记录。我的构建路径中存在以下 jar,

  • jackson 数据绑定(bind)
  • jackson 核心
  • jackson 注释

这是我的 Controller 方法

  @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);

    }
}

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

在上面的方法中,在将实例列表添加到 modelMap 对象之前,我正在检查列表的大小,它给出的是 5,但在我的 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" 不会出现在 map 中,因为每个生成的属性名称都将是 "string",最后一个获胜.

要解决此问题,只需在将实例添加到 modelMap 时为其分配一个属性名称即可:

modelMap.addAttribute("myInstances", instances);

关于java - Fasterxml Jackson 映射 - 数据未正确绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646217/

相关文章:

java - 如何在 Java 运行时对包含特定文本的 JTable 行进行加粗或着色

java - joda 时间格式化程序解析 yyyy-mm-dd 并带有额外的小时

java - 在 Java 中从 JSON 中删除注释的最快方法?

java - @JsonIgnore 不忽略hibernate Entity中的字段

java - Math.random 重复自身

java - 将 jpeg 图像发送到 Servlet 并将其转换为 BufferedImage

javascript - 为什么我的 json 数组没有为每行输出输入类型 radio

Spring MVC 与 Hibernate Validator 对于数据库字段是必需的,但在应用程序中不是必需的

java - 使用 Hibernate Search 查询枚举(enum)的 IndexedEmbedded 列表

java - jdbctemplate - queryForList - 传递日期?