java - 使用 Spring Restful Web 服务的 json 进行回复

标签 java json spring rest spring-mvc

我有一个 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/

相关文章:

java - NoSuchMethodError :registerAutoProxyCreatorIfNecessary(ParserContext;Object;) exception with Spring config 错误

ios - NSJSONSerialization 在验证应用程序收据时导致 Swift 崩溃

javascript - 如何从另一个对象向 json 对象添加数据?

java - 每次调用其方法时都会重新创建 CGlib-wired bean

java - 如何重定向以 ".jsp"结尾的网址

java - 如何从jtable中连续勾选的jcheckbox获取值

java - 扫雷瓷砖值(value)问题

java - "Expected BEGIN_OBJECT but was STRING at line 1 column 1"

java - Java/Spring 调度任务

java - Spring 安全: provide access depending on service call