簡體   English   中英

用json回復Spring Restful Web服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM