将JdbcTemplate结果转换为JSON的最有效方法是什么?

6

一种方法是将 List< Map < String, Object>> 转换为 List(object);,如下所示:

List<Map<String, Object>> ls = jdbcTemplate.queryForList(query);

List<Users> ls_o =  new ArrayList<>(ls_o);
        for (Map<String, Object> row : ls) {
        ls_o.add(row);

        }
 return new ResponseEntity<List<User>>(ls_o, HttpStatus.OK);

有没有一种有效的方法可以直接将jdbcTemplate的结果转换为JSON对象?

使用GSON解析器。将查询结果作为字符串返回并进行解析:public static JsonObject getGsonJsonObject( String jsonString ) { if ( StringUtils.isNotBlank( jsonString ) ) { JsonParser gsonJSONParser = new JsonParser(); return ( JsonObject ) gsonJSONParser.parse( jsonString ); } else { return null; } } - Vishnu G S
1个回答

12

如果您正在使用Maven作为构建脚本,请添加以下依赖项

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.5</version>
</dependency>

按照下面所示修改代码

   private final ObjectMapper mapper = new ObjectMapper();

    public ResponseEntity myMethod(){

    List<Map<String, Object>> ls = jdbcTemplate.queryForList(query);        
    final String str = mapper.writeValueAsString(ls);
    return new ResponseEntity<List<User>>(str, HttpStatus.OK);
}

然而,如果你使用的是Spring 4+ MVC,我建议你使用@RestController注解。

它会为你完成大部分工作,这里有一个例子,这是一个简单的例子。

   @RestController
   class MyTestClass{

    @RequestMapping("/myMethod")
    public List<Map<String, Object>> myMethod(){

        return jdbcTemplate.queryForList(query);        
    }

}

注意: 在以上两种情况下,您需要将Object类转换为一个精确的类才能正常工作。


无需任何努力即可运行。谢谢! - Lokesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接