我正在尝试将响应返回为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/的链接
希望对你有帮助