如何在Spring MVC中获取JSON作为响应



我正在尝试将响应返回为JSON。
搜索后,我找到了在请求映射中添加标头="接受=应用程序/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响应

我知道您正在尝试从/员工的 GET 请求发送响应。

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

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

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

更多信息:如果要指定将与请求一起发送的数据类型,可以使用 consumptions 属性

例:

@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/的链接

希望对你有帮助

相关内容

  • 没有找到相关文章

最新更新