最近在弄企业微信回调发现一个问题,就是springMVC接口返回的字符串带上了双引号。企业微信具体问题参照企业微信回调测试验证通过,但实际配置时验证不通过
造成这个问题的原因是,工程里加了ControllerAdvice统一处理返回结果,把结果都当成json来处理了,而json中默认会给字符串带上双引号。
解决方法就是加上StringHttpMessageConverter转换器,如果返回结果是String型,则走StringHttpMessageConverter这个转换器,其它类型,就走FastJsonHttpMessageConverter转换器。
注意:加入StringHttpMessageConverter时,必须放在FastJsonHttpMessageConverter前面。
配置如下:
@Configuration @EnableWebMvc public class WebConfiguration extends WebMvcConfigurerAdapter { @Bean public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() { //需要定义一个convert转换消息的对象; FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); //处理中文乱码问题 List<MediaType> fastMediaTypes = new ArrayList<>(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastMediaTypes.add(MediaType.TEXT_HTML); //在convert中添加配置信息. fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue); fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return fastJsonHttpMessageConverter; } @Bean public StringHttpMessageConverter stringHttpMessageConverter(){ return new StringHttpMessageConverter(Charset.forName("UTF-8")); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(stringHttpMessageConverter()); converters.add(fastJsonHttpMessageConverters()); } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { converters.clear(); converters.add(stringHttpMessageConverter()); converters.add(fastJsonHttpMessageConverters()); }