我有一个Spring MVC restful webservice,它回复了所有产品的列表。
目前我在Bean列表中返回所有数据。
List<ProdBean> results = jdbcTemplate.query("select * from Prods",
new RowMapper<ProdBean>() {
@Override
public ProdBean mapRow(ResultSet rs, int rowNum) throws SQLException {
ProdBean gb = new ProdBean();
gb.setProdId(rs.getInt("ProdId"));
gb.setProdName(rs.getInt("ProdName"));
// Few more params
return gb;
}
});
return results; //I want to convert this to a json object.
如何转换List<ProdBean> results
以创建json对象并将其用作返回参数?
抽象 -
[{"prodId":1, "prodName":"A"}, {"prodId":2, "prodName":"B"}, ... ]
这可以使用一些注释来完成吗?
答案 0 :(得分:1)
使用@ResponseBody
注释。返回的值将转换为JSON
(默认使用Jackson)。
@Controller
@RequestMapping("/foo")
public class JSONController {
/**
* This method will return [{"prodId":1, "prodName":"A"}, {"prodId":2, "prodName":"B"}, ... ]
*/
@ResponseBody
@RequestMapping(value="/bar", method = RequestMethod.GET)
public List<ProdBean> getJson() {
List<ProdBean> results = ...
return results;
}
}
如果您使用的是Spring 4
,则可以使用新的@RestController注释,并删除方法上的@ResponseBody
注释。
<强>更新强>
你必须在类路径上有.jar
。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.2</version>
</dependency>
答案 1 :(得分:1)
在返回类型定义中使用@responsebody注释,如果在设置中使用mvc注释驱动它应该可以正常工作。返回类型必须与Json匹配。