被@ResponseBody注解的方法通常用来将返回值作为响应体,如果只配置了json转换器,那么当返回的只是普通字符串时,字符串会被转成json,于是前后就多出了双引号。
在spring-mvc.xml中这样配置即可解决:
<!--返回普通字符串作为响应体--> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" /> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/json;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解DOMAIN的映射 RequestMappingHandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter" /> <!-- 字符串 --> <ref bean="mappingJackson2HttpMessageConverter" /> <!-- JSON转换器 --> </list> </property> </bean>
需要注意的是,我用的spring版本是4.3.6,因此设置的是RequestMappingHandlerAdapter,其他低版本要设置成AnnotationMethodHandlerAdapter,具体百度即可知晓。