Spring 3:@ResponseBody - 如何控制获取XML或JSON的响应?

时间:2011-06-20 07:35:52

标签: spring-mvc spring-3

我正在使用<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

3 个答案:

答案 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() { ... }