[英]Replying with a json for a Spring Restful Web Service
我有一個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"}, ... ]
可以使用一些注釋來完成嗎?
使用@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
注釋。
UPDATE
你必須在類路徑上有那些.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>
在返回類型定義上使用@responsebody注釋,如果在設置中使用mvc注釋驅動它應該可以正常工作。 返回類型必須與Json匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.