185.Spring Boot使用FastJson解析JSON数据:中文乱码

 

【视频&交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

关注spring boot微信公众号,第一时间了解最新的Spring Boot动态,当前已经更新到:Spring Boot葵花宝典:初现江湖 、Spring Boot葵花宝典:初出茅庐

 

需求缘起:

       在整理《Spring Boot完美使用FastJson解析JSON数据》章节代码的时候,发现在使用FastJson的时候,中文乱码了,很奇怪,比很久还很久之前怎么没有出现中文乱码嘛?可能见鬼了吧,好了,不管是不是鬼,既然碰到了,就得处理。对于这个乱码还是很好处理的。

 

一、Spring Boot接入FastJson的方式回顾

       在之前的代码,我们已经介绍过了,如何在Spring Boot中接入FastJson,这里不详细介绍,如果没有记忆的,可以翻看之前的文章,这里只简单的说明下。

       接入FastJson有两种常用的方式:

其一:继承 WebMvcConfigurerAdapter覆写configureMessageConverters,定义FastJsonHttpMessageConverter对象,然后进行基本的设置,最后添加到List<HttpMessageConverter<?>>中。

其二:定义返回值为HttpMessageConverters的bean,在方法中同样定义FastJsonHttpMessageConverter对象,进行基本的设置,最后使用new HttpMessageConverters(FastJsonHttpMessageConverter) 做为方法的返回值。

 

二、Spring Boot 中文乱码的产生

       上面的两种方式,都需要使用到FastJsonHttpMessageConverter进行配置,这里中文乱码的原因,我们没有配置响应的MediaType为UTF-8编码,只需要设置下即可。

 

三、Spring Boot 中文乱码的解决

       既然知道是少了配置,那么重要的是FastJson支持配置MediaType嘛,很高兴的告诉你,是支持的,这里提供方式二的源码如下:

 

Java代码 
  1. @Bean  
  2.     public HttpMessageConverters fastJsonHttpMessageConverters() {  
  3.         // 1、需要先定义一个 convert 转换消息的对象;  
  4.         FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();  
  5.           
  6.         //2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;  
  7.         FastJsonConfig fastJsonConfig = new FastJsonConfig();  
  8.         fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);  
  9.           
  10.         //2-1 处理中文乱码问题  
  11.         List<MediaType> fastMediaTypes = new ArrayList<>();  
  12.         fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);  
  13.         fastConverter.setSupportedMediaTypes(fastMediaTypes);  
  14.           
  15.         //3、在convert中添加配置信息.  
  16.         fastConverter.setFastJsonConfig(fastJsonConfig);  
  17.           
  18.         HttpMessageConverter<?> converter = fastConverter;  
  19.         return new HttpMessageConverters(converter);  
  20.     }  
  21.           

         

         这里解决乱码核心的部分是:

Java代码 
  1. //2-1 处理中文乱码问题  
  2.         List<MediaType> fastMediaTypes = new ArrayList<>();  
  3.         fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);  
  4.         fastConverter.setSupportedMediaTypes(fastMediaTypes);  

 

————  微信公众号 ————

提供Spring Boot资讯、技术文章,具体关注方式,搜索springboot或者扫描以下二维码即可关注:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟纤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值