2

我正在使用<mvc:annotation-driven />Spring (3.0) 配置(没有ContentNegotiatingViewResolver)。根据文档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>

调试AnnotationDrivenBeanDefinitionParser => jaxb2Present = true, jacksonPresent = true

4

3 回答 3

4

Spring 使用请求的“Accept”标头来决定是发送 JSON 还是 XML。如果两者都被接受,那么你会得到一个或另一个,我不记得先检查了。

要获取 XML,您的客户端需要在标头中包含“application/xml”,而不是“application/json”。

于 2011-06-20T12:21:59.100 回答
0

像这样使用@ResponseBody。下面的方法将 JSON 作为请求参数并返回 JSON 响应。

@RequestMapping(value = "...", method = RequestMethod.POST)
@ResponseBody
public Object RestPOSTService(@RequestBody JsonContent content,
        HttpServletRequest request) throws Exception {
        .....
    return (JSON);
}
于 2013-03-05T10:56:13.807 回答
0

它在 RequestMapping 中配置

@RequestMapping(
 value = "...", 
 method = {RequestMethod.POST},produces ="application/json")
 public @ResponseBody Object getObject() { ... } 
于 2014-07-08T10:49:33.697 回答