2014-07-18 57 views
2

傢伙嗨!轉換列表<Object[]>以JSON

有人可以幫助我,怎麼我的HQL查詢結果轉換成JSON使用對象的列表,並與其他服務得到它。

這裏是返回qyery結果列表我的服務方法:

@Override 
    public List<Object[]> getAllDepartments() { 
     List<Object[]> list; 
     Query query = entityManager.createQuery("SELECT dp.name, avg (wr.salary) FROM Worker wr join wr.department dp GROUP BY dp.name"); 
     list = query.getResultList(); 
     return list; 
    } 

我的春天的REST類型的控制器:

@RequestMapping(value = "/all", method = RequestMethod.GET) 
@ResponseBody 
public JsonNode getAllDeps() { 
    List<Object[]> list = departmentService.getAllDepartments(); 
    ObjectMapper objectMapper = new ObjectMapper(); 
    Map<String, Integer> resultMap = new HashMap<String, Integer>(list.size()); 
    for (Object[] result : list) 
     resultMap.put((String)result[0], ((Double)result[1]).intValue()); 
    final JsonNode json = objectMapper.valueToTree(resultMap); 
    return json; 
} 

現在,我的服務性反應的我JSON與多數民衆贊成數據看: { 「安全」:1500年, 「經濟」:1850年, 「IT」:2000}

但我需要(物品清單):

[{name:「Security」,salary:「1500」},{name:「Economical」,salary:1850},{name:「IT」,工資:2000}]

感謝您的幫助。

回答

4

單從控制器方法

@RequestMapping(value = "/all", method = RequestMethod.GET) 
@ResponseBody 
public List<Object[]> getAllDeps() { 
    List<Object[]> list = departmentService.getAllDepartments(); 
    return list; 
} 

@ResponseBody註釋不轉型爲返回列表。

+0

thx,我不能現在檢查它。 也許你也告訴我如何解析json到jQuery Ajax成功調用我的服務後的兩列(名稱,平均工資)的HTML表? – MeetJoeBlack

+0

請爲此提出另一個問題。 –

+0

是的,你正在使用休息...休息是不是一個MVC的概念...甚至沒有特別意味着你正在瀏覽器...只是一個HTTP客戶端。它是一種數據...或狀態轉移機制。您選擇的數據表示是JSON。 (這evgeni忘記把他的請求映射)......它是由你來做一些JavaScript的一面,以使您的表......或使用基於Java的mvc框架。 – AnthonyJClink