java - 将 List<Object[]> 转换为 JSON

标签 java json spring rest jackson

大家好!

有人可以帮助我,如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过 REST 服务获取它。

这是我的服务方法,它返回 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;
    }

还有我的 Spring RESTfull Controller :

@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:"安全",工资:"1500"},{name:"经济",工资:1850},{name:"IT",工资:2000}]

感谢您的帮助。

最佳答案

只需从 Controller 方法返回列表

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

@ResponseBody 注释会为您进行转换。

关于java - 将 List<Object[]> 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24819442/

相关文章:

android - 解析 JSONArray Android 中的 JSONObject 时出错

java - 我可以在 dispatcher-servlet 中定义 beans 吗?

java - Spring 验证与 Hibernate 验证

java - 在localhost启动tomcat v9.0服务器遇到问题

java - System.out.print() 在测试方法中不显示任何内容

java - Java线程未在JDBC程序中进行

java - 从 JavaScript 读取 JSP 变量

java - 引用封闭对象通过匿名类转义-java

java - 如何在 Java 中使用 Restful Web 服务(Restful API)

ruby-on-rails - Rails : Can't render pages, 获取 JSON 解析错误