查阅资料,大都表示需要 加入依赖的jar,jackson-core-asl-1.9.12.jar,jackson-mapper-asl-1.9.12.jar问题解决。
经测试不是这个错误不是必须依赖这两个 jar。
如下配置正常返回数据
pom.xml
<!-- Jackson JSON Processor --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency>
springMvc.xml 中
<mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=utf-8</value> <value>text/xml;charset=utf-8</value> <value>text/plain;</value> <value>text/json;charset=utf-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven>
Controller中
@RequestMapping(value = "checkLogin", method = RequestMethod.POST) @ResponseBody public ResultDto checkLogin(String name, String password, int role) { return loginService.checkLogin(name, password, role); }
-------------------------------------------------------------------------------
ResultDTO对象缺少部分 get 方法导致 格式化 JSON 对象时出错。
移除 上面2个 jar 与返回对象的 get 方法进行测试,报406错误码。
debug 代码 于 ServletInvocableHandlerMethod.class 中捕获异常 "Could not find acceptable representation"
添加 get 方法后测试正常返回该对象的 JSON 字符
public class ResultDto { private boolean succeed; private Object data; public ResultDto(boolean succeed) { this.succeed = succeed; } public ResultDto(boolean succeed, Object data) { this.succeed = succeed; this.data = data; } /* public boolean isSucceed() { return succeed; } public Object getData() { return data; } */ public void setSucceed(boolean succeed) { this.succeed = succeed; } public void setData(Object data) { this.data = data; } }