博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot(四).配置FastJson自定义消息转化器
阅读量:5021 次
发布时间:2019-06-12

本文共 2734 字,大约阅读时间需要 9 分钟。

                                                                                           配置FastJson自定义消息转化器

一.fastJson简介

fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用。

今天,我们使用fastJson来配置消息转换器,过滤并修改返回的消息

二.依赖导入

com.alibaba
fastjson
1.2.31

三.配置类编写

新建FastJsonConfiguration配置信息类,添加@Configuration注解让SpringBoot自动加载类内的配置,有一点要注意我们继承了WebMvcConfigurerAdapter这个类,这个类是SpringBoot内部提供专门处理用户自行添加的配置,里面不仅仅包含了修改视图的过滤还有其他很多的方法,还包括拦截器,过滤器等配置

/** * WebMvcConfigurerAdapter类是SpringBoot内部提供专门处理用户自行添加的配置, * 里面不仅仅包含了修改视图的过滤还有其他很多的方法,还包括拦截器,过滤器,Cors配置等。 * Created by hengyang4 on 2018/7/9. */@Configurationpublic class FastJsonConfiguration extends WebMvcConfigurerAdapter{    /**     * 修改自定义消息转化器     * @param converters 消息转换器列表     */    @Override    public void configureMessageConverters(List
> converters){ //调用父类的配置 super.configureMessageConverters(converters); //创建fastJson消息转换器 FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter(); //创建配置类 FastJsonConfig fastJsonConfig = new FastJsonConfig(); //过滤并修改配置返回内容 fastJsonConfig.setSerializerFeatures( //List字段如果为null,输出为[],而非null //SerializerFeature.WriteNullListAsEmpty, //字符类型字段如果为null,输出为"",而非null SerializerFeature.WriteNullStringAsEmpty, //Boolean字段如果为null,输出为falseJ,而非null //SerializerFeature.WriteNullBooleanAsFalse, //消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环) SerializerFeature.DisableCircularReferenceDetect, //是否输出值为null的字段,默认为false。 SerializerFeature.WriteMapNullValue ); //处理中文乱码问题 List
fastMediaTypes = new ArrayList
(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastJsonConverter.setSupportedMediaTypes(fastMediaTypes); fastJsonConverter.setFastJsonConfig(fastJsonConfig); //将fastjson添加到视图消息转换器列表内 converters.add(fastJsonConverter); }}

 

下面我们来介绍下常用的SerializerFeatures配置。

FastJson SerializerFeatures

WriteNullListAsEmpty  :List字段如果为null,输出为[],而非null

WriteNullStringAsEmpty : 字符类型字段如果为null,输出为"",而非null
DisableCircularReferenceDetect :消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环)
WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null
WriteMapNullValue:是否输出值为null的字段,默认为false。

 

四.结果验证

我们这里使用了WriteNullStringAsEmpty,当返回信息里有null值时会自动转为"",我们来一起验证一下

 

表中数据第一条信息的name为null,我们来查询一下第一条用户信息

返回的name转为了空字符串"",这样,我们的fastJson消息转化器就配置成功了!

 

 

转载于:https://www.cnblogs.com/GodHeng/p/9285073.html

你可能感兴趣的文章
JS中的几个弹出框用法及注意
查看>>
没忍住,听了rIPPER的,还是入手了个机械的
查看>>
linux rman shell
查看>>
struts2_Action之间的重定向传参
查看>>
网线接法
查看>>
LeetCode--Remove Duplicates from Sorted List
查看>>
(15)JavaScrip 的一些简单笔记
查看>>
右左法则解决复杂声明
查看>>
Jenkins的新建job和配置job
查看>>
三大类加载器 经典例子
查看>>
nohub命令
查看>>
光照问题之常见算法比较(附Python代码)
查看>>
【转】android颜色对应的xml配置值
查看>>
Java加密解密相关
查看>>
LeetCode & Q88-Merge Sorted Array-Easy
查看>>
这个2012不寻常
查看>>
zabbix配置
查看>>
web基础1
查看>>
接口测试框架1
查看>>
primefaces p:tableData 显示 List<List>
查看>>