之前没有使用过SpringBoot,现在这个项目中有使用,刚好项目赶的差不多了,今天就想好好学学,解决遇到各种BUG的不断挑战。
今天说一下SpringBoot配置FastJson,虽然说这个配置起来很简单,百度一下基本就可以搞定,但是你测了之后就会有许多的小问题,今天就被我遇到了,那么今天就彻底给大家把这些存在的小问题解决掉。
1、先创建一个简单的SpringBoot项目,这里相信大家应该是可以做到了,我就不多说了,我把之前创建项目的地址放在下面,不会的朋友可以参考下;
2、创建了SpringBoot项目之后,那么接下来就是整合FastJson了。
我们可以看到,在SpringBoot中,已经给我们默认配置了Jackson。
3、SpringBoot整个FastJson的方式其实有两种
第一种:
①、启动类继承WebMvcConfigurerAdapter;
②、重写configureMessageConverters方法即可;
第二种:
启动类注入HttpMessageConverters
这里我们只说实用的,第一种方式我们就不说了,其实跟第二种方式大同小异,我们来看看如何使用HttpMessageConverters来进行配置。首先我们要导入FastJson的maven坐标,加载相关的jar文件,而且这里的版本必须是1.2.0以上的,不然可能会出一些小问题。
接下来就是最主要的代码了
@Bean public HttpMessageConverters fastJsonHttpMessageConverters(){ // 先定义一个convert 转换消息的对象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 添加fastJson的配置信息,这里我们配置格式化为json数据 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 将convert添加到converters当中 HttpMessageConverter<?> converter = fastConverter; return new HttpMessageConverters(converter); }
感觉很完美,似乎没有任何的问题,那么我们来启动一下,看一下是否能得到我们想要的结果。下面是我们写的Controller类,返回一个对象,里面有个Date类型的属性,我们在实体类中指定Date的返回格式,如果能得到指定的格式,那么FastJson就配置成功了。
Controller层代码
@RestControllerpublic class LoginController { @RequestMapping("hello") public String hello() { return "hello2"; } @GetMapping(value = "login") public User login() { User user = new User(); user.setUsernamg("admin"); user.setPassword("1234"); user.setCreateTime(new Date()); return user; }}
实体类User层代码
@Datapublic class User implements Serializable { private String usernamg; private String password; // 指定date的返回格式 @JSONField(format = "yyyy-MM-dd HH:mm") private Date createTime;}
我们来看下运行结果
我们确实拿到了我们想要的结果,是不是感觉很圆满,但是结果往往会让你觉得很伤感,就当我把返回的格式改为年月日的时候,问题出来了,大家看下出现了什么问题。
乱码,是不是心情很烦躁,今天搞了一天试了好多方法我确实也很烦躁,但是总算是找到解决的方法了。
大家在看下原来的这些代码,我们在这里去进行中文乱码的处理
@Bean public HttpMessageConverters fastJsonHttpMessageConverters(){ // 先定义一个convert 转换消息的对象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 添加fastJson的配置信息,这里我们配置格式化为json数据 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 处理中文乱码问题 List<MediaType> fastMediaTypes = new ArrayList<>(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastConverter.setSupportedMediaTypes(fastMediaTypes); // 将convert添加到converters当中 HttpMessageConverter<?> converter = fastConverter; return new HttpMessageConverters(converter); }
我们再来运行看看效果
那么这个时候大家就可以发现,乱码问题已经全部解决掉了,把今天遇到的问题分享给大家,大家学习一下,下次如果遇到这种问题,你就可以轻松的解决掉了。
更多精彩内容请关注”一个程序员的成长“
本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。