我有一个 Spring MVC Restful Web 服务,它会回复所有产品的列表。
目前,我将所有数据返回到 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"}, ... ]
这可以使用一些注释来完成吗?
最佳答案
使用@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>
关于java - 使用 Spring Restful Web 服务的 json 进行回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373345/