2016-04-15 137 views
1

我想在瀏覽器中顯示我的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"}} 

感謝。

回答

1

看起來真正的問題是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);