我正在使用spring 4.1.0.RELEASE:
获得着名的Json反序列化异常org.springframework.web.HttpMediaTypeNotSupportedException:内容类型' application / json; charset = UTF-8'不支持
只有通过几个类似的线程后,我仍然无法找到问题的原因
这是我的控制者:
@RequestMapping(value = "/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String myMethod( @RequestBody MyObj request) {
.....
}
POJO:
public class MyObj implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
Integer something;
Integer[] somethingElse;
// Getters and setters
}
我确实有杰克逊依赖:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.6</version>
</dependency>
在我的POM中
我发出以下请求:
{ &#34;东西&#34; :4, &#34; somethingElse&#34;:[1,2] }
我检查过我有一个格式正确的JSON,它在我的服务器上点击了相应的控制器。
现在可能出错了????
编辑: 配置中的这一更改解决了问题:
在我的root配置
中<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg index="0" value="application" />
<constructor-arg index="1" value="json" />
<constructor-arg index="2" value="UTF-8" />
</bean>
</list>
</property>
</bean>
<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
在servlet配置
中<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<beans:ref bean="jacksonMessageConverter"></beans:ref>
</mvc:message-converters>
</mvc:annotation-driven>
在POM中,添加最新版本的
杰克逊映射器-ASL,
杰克逊核心,
杰克逊 - 数据绑定,
杰克逊 - 注解
谢谢大家
答案 0 :(得分:1)
您是否已禁用默认的MessageConverter?似乎在您的配置中缺少MappingJackson2MessageConverter。
你能提供你的mvc配置吗?