繁体   English   中英

如何在Spring MVC中将JSON作为响应?

[英]How to get JSON as Response in Spring MVC?

我正在尝试将响应返回为JSON。
搜索后,我发现在RequestMapping中添加标头=“ Accept = application / json”的解决方案。
但仍然无法正常工作。
抛出错误HTTP状态406“此请求标识的资源仅能够生成具有根据请求“接受”标头不可接受的特征的响应。”
这是我的控制器代码:

@RestController
public class EmployeeController {

    private EmployeeService employeeService;

    @Autowired(required = true)
    @Qualifier(value = "employeeService")
    public void setEmployeeService(EmployeeService employeeService){
        this.employeeService = employeeService;
    }

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String test(){
        return "{\"name\":\"xyz\"}";
    }


    @RequestMapping(value = "/employees",method = RequestMethod.GET,headers = "Accept=application/json")
    public  List<Employee> listEmployees(){
        List<Employee> employees = this.employeeService.getEmployees();
        return employees;
    }
}

我在哪里做错了?

生成JSON和XML响应的简单方法是@ResponseBody批注。

@RequestMapping(value =" /jsonPostSingle", method = RequestMethod.GET)
 @ResponseBody
 public PostModel generateJSONPostsingle(@ModelAttribute("postModel") PostModel postModel) {

 if(postModel.getPostId() == 1) {
 postModel.setTitle("post title for id 1");
 } else {
 postModel.setTitle("default post title");
 }
 return postModel;
 }

这样,您将能够使用@ModelAttribute将请求映射到模型类。

遵循完整的教程Spring MVC:使用@ResponseBody的JSON响应

我了解您正在尝试从/ employees的GET请求发送响应。

如果您使用的是Spring 3.1,请尝试使用

@RequestMapping(value = "/employees",method = RequestMethod.GET, produces = "application/json")

而不是添加headers = "Accept=application/json"

更多信息:如果您想指定将随请求发送的数据类型,则可以使用consumes属性

例:

@RequestMapping(value="/foo", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")

这将消耗和响应仅JSON类型

检查关于春季更新的此链接http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM