我正在使用<mvc:annotation-driven />
Spring(3.0)配置(没有ContentNegotiatingViewResolver)。根据{{3}} Spring 3支持JSON和XML。在下面的处理程序方法上使用@ResponseBody
可以得到JSON响应。如何控制获取XML或JSON的响应?
@RequestMapping("/data")
public @ResponseBody User getUser() {
return new User();
}
修改
使用的Maven依赖项:
<!-- xml -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.1.8</version>
</dependency>
<!-- json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.1</version>
</dependency>
调试documentation =&gt; jaxb2Present = true,jacksonPresent = true
答案 0 :(得分:4)
Spring使用请求的“Accept”标头来决定是发送JSON还是XML。如果两者都被接受,那么你将得到一个或另一个,我不记得先被检查。
要获取XML,您的客户端需要在标题中包含“application / xml”,而不是“application / json”。
答案 1 :(得分:0)
像这样使用@ResponseBody
。下面的方法将JSON作为请求参数并返回JSON响应。
@RequestMapping(value = "...", method = RequestMethod.POST)
@ResponseBody
public Object RestPOSTService(@RequestBody JsonContent content,
HttpServletRequest request) throws Exception {
.....
return (JSON);
}
答案 2 :(得分:0)
在RequestMapping
中配置@RequestMapping(
value = "...",
method = {RequestMethod.POST},produces ="application/json")
public @ResponseBody Object getObject() { ... }