SpringBoot更改HttpMessageConverters使⽤FastJson出现乱码
问题
1、出现问题的现象!如下截图,使⽤SpringBoot 进⾏开发,接⼝返回的内容出现中⽂乱码?
接⼝内容想要返回的内容:
页⾯返回内容:
惊喜不?意外不?
为什么出现这个情况?不例外的话,很多同事都是替换了SpringBoot⾃带的Json框架为FastJson解析⼯具了。
在替换的过程中,没有注意编码格式造成的!
@SpringBootApplication(scanBasePackages = {"source.cloud*"})
@ServletComponentScan({"source.cloud*"})
public class ResourceUploadGuestApplication {
public static void main(String[] args) {
SpringApplication.run(ResourceUploadGuestApplication.class, args);
}
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//创建FastJson信息转换对象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//创建Fastjosn对象并设定序列化规则
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//规则赋予转换对象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(fastJsonHttpMessageConverter);
}
}
2、解决问题呗!
我们从上⾯的代码可以看出,在进⾏数据转换的时候,直接⾷⽤FastJson进⾏替换了原本的默认转换⼯具。那既然出现问题,⼀定是新的转换⼯具出现了问题!
那我们在设定转换过程,是不是可以设定具体转换之后的数据类型及编码格式呢?答案是肯定的!
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//创建FastJson信息转换对象springboot中文
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//创建Fastjosn对象并设定序列化规则
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
// 中⽂乱码解决⽅案
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//设定json格式且编码为UTF-8
fastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypes);
//规则赋予转换对象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(fastJsonHttpMessageConverter);
}
这样就解决了乱码问题了!
3、为什么这么修改呢?
如果你看到结果之后,想知道为啥这么修改的话,debug!
初始化的时候,我们看到
SupportedMediaTypes值为 */* 这样对于很多浏览器是识别不了具体的格式和编码类型的,所以出现乱码和⾮格式化的样⼦!(2)指定格式个编码类型之后,出现了JSON格式和UTF-8编码格式,其实对应枚举对象就是
/**
* Public constant media type for {@code application/json;charset=UTF-8}.
*/
public final static MediaType APPLICATION_JSON_UTF8;
  ⼩⽩看问题,浅显不深究
如若表达不清晰或存疑,可留⾔指教!
      感谢来过
  放松⼀下啦,下图⼏个⽅脸吧!————————————————————————————————————————————————
      (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
       (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)
        (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
          (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)
            (^ _ ^)(^ _ ^)(^ _ ^)
              (^ _ ^)[^ _ ^]
               (^ _ ^)————————————————————————————————————————————————

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。