尝试使用Spring MVC接收发布请求时,出现错误(处理程序执行导致异常:内容类型'application/json'不受支持) 。Spring MVC和jackson不支持内容类型'application/json'
我的JSON,只是为了测试,是非常简单的:
{ "test": "abc123" }
我的POJO类:
public class Request {
String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}
而且我的控制器:
@RequestMapping(value = "/testing", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
private void testing(@RequestBody Request body, @RequestHeader HttpHeaders headers, HttpServletRequest httpRequest) {
System.out.println(body.getTest());
}
在我的pom.xml,我补充说:
<dependencies>
...
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.4.3</version>
</dependency>
</dependencies>
我认为json反序列化中有些问题,但我找不到它。
任何帮助,欢迎。谢谢。
为什么在'produce'上使用'MediaType.APPLICATION_JSON_VALUE',而在'consumes'上使用字符串?当方法不产生任何东西时,为什么你有'produce'和'@ ResponseBody'?这可能会让Spring MVC混淆,以防止映射工作。 – Andreas
@Andreas,'MediaType.APPLICATION_JSON_VALUE'只是''application/json''的一个常量,所以我不认为这是问题所在。 无论如何,我删除了'produce'和'@ ResponseBody',我仍然处于同一个问题。 –
@PedroH你为什么需要这个“消费”属性呢?它仅用于使映射更具体。删除它,然后重试。 – Nikem