SpringBoot使用FastJson

原创 Laughing  2019-07-21 17:23  阅读 42 次 评论 0 条

什么是FastJson

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

maven依赖

  1. <!--添加fastjson解析JSON数据-->  
  2.         <dependency>  
  3.             <groupId>com.alibaba</groupId>  
  4.             <artifactId>fastjson</artifactId>  
  5.             <version>1.2.16</version>  
  6.         </dependency>  

创建配置信息类

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

fastJson视图过滤配置

  1. package cn.notemi.configuration;  
  2. import com.alibaba.fastjson.serializer.SerializerFeature;  
  3. import com.alibaba.fastjson.support.config.FastJsonConfig;  
  4. import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;  
  5. import org.springframework.context.annotation.Configuration;  
  6. import org.springframework.http.converter.HttpMessageConverter;  
  7. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
  8. import java.util.List;  
  9. /** 
  10.  * Title:FastJsonConfiguration 
  11.  * Description:FastJson配置信息 
  12.  * 
  13.  * @author Flicker 
  14.  * @create 2017-08-08 下午 4:33 
  15.  **/  
  16. @Configuration  
  17. public class FastJsonConfiguration extends WebMvcConfigurerAdapter  
  18. {  
  19.     /** 
  20.      * 修改自定义消息转换器 
  21.      * @param converters 消息转换器列表 
  22.      */  
  23.     @Override  
  24.     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {  
  25.         //调用父类的配置  
  26.         super.configureMessageConverters(converters);  
  27.         //创建fastJson消息转换器  
  28.         FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();  
  29.         //创建配置类  
  30.         FastJsonConfig fastJsonConfig = new FastJsonConfig();  
  31.         //修改配置返回内容的过滤  
  32.         fastJsonConfig.setSerializerFeatures(  
  33.                 SerializerFeature.DisableCircularReferenceDetect,  
  34.                 SerializerFeature.WriteMapNullValue,  
  35.                 SerializerFeature.WriteNullStringAsEmpty  
  36.         );  
  37.         fastConverter.setFastJsonConfig(fastJsonConfig);  
  38.         //将fastjson添加到视图消息转换器列表内  
  39.         converters.add(fastConverter);  
  40.     }  
  41. }  

fastJson配置实体调用setSerializerFeatures方法可以配置多个过滤方式,下面我们来介绍下常用的SerializerFeatures配置。

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

项目运行
我们使用了过滤,SerializerFeature.WriteNullStringAsEmpty,本该显示null,显示为"",所以成功使用。

历史上的今天:

本文地址:https://www.lisen.me/springbook-uses-fastjson.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情