美文网首页Spring boot 2
3、Spring Boot2 配置使用FastJson返回Jso

3、Spring Boot2 配置使用FastJson返回Jso

作者: 咸鱼_3133 | 来源:发表于2019-05-04 14:07 被阅读0次

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

    将fastJson加入到SpringBoot2.X项目内,配置json返回视图使用fastJson解析。

    1、创建SpringBoot项目;

    2、添加依赖:

    <dependency>    

        <groupId>com.alibaba</groupId>    

        <artifactId>fastjson</artifactId>   

     <version>1.2.58</version>

    </dependency>

    3、添加配置信息类FastJsonConfiguration:

    import com.alibaba.fastjson.serializer.SerializerFeature;

    import com.alibaba.fastjson.support.config.FastJsonConfig;

    import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.http.MediaType;

    import org.springframework.http.converter.HttpMessageConverter;

    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

    import java.util.Iterator;

    import java.util.List;

    import  java.util.ArrayList;

    @Configuration

    public class FastJsonConfiguration implements WebMvcConfigurer {    

    @Override    

    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {        

    Iterator<HttpMessageConverter<?>> iterator = converters.iterator();       

     while(iterator.hasNext()){            

        HttpMessageConverter<?> converter = iterator.next();           

         if(converter instanceof MappingJackson2HttpMessageConverter){              

          iterator.remove();           

         }       

     }       

     /*** 1.先定义一个convert转换消息的对象

    * 2.添加fastjson的配置信息,比如:是否要格式化返回的json数据

    * 3.在convert中添加配置信息

    * 4.将convert添加到converters当中        

     *///1.先定义一个convert转换消息的对象        

    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();        

    //2.添加fastjson的配置信息,比如:是否要格式化返回的json数据        

    FastJsonConfig fastJsonConfig = new FastJsonConfig();        

    fastJsonConfig.setSerializerFeatures(               

     //防止循环引用                

    SerializerFeature.DisableCircularReferenceDetect,               

     //空集合返回[],不返回null                

    SerializerFeature.WriteNullListAsEmpty,                /

    /空字符串返回"",不返回null                

    SerializerFeature.WriteNullStringAsEmpty,                

    SerializerFeature.WriteMapNullValue,               

     SerializerFeature.PrettyFormat        );       

     //处理中文乱码问题       

     List<MediaType> fastMediaTypes = new ArrayList<MediaType>();       

     fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);        

    fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);        

    //3.在convert中添加配置信息       

     fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);        

    converters.add(fastJsonHttpMessageConverter);    

    }

    }

    FastJson SerializerFeatures

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

    PrettyFormat:结果是否格式化,默认为falseWriteMapNullValue:是否输出值为null的字段,默认为false

    4、测试结果:

    上文讲解了fastJson的神奇效果,2019-5-4,Fish,ZhuHai.

    相关文章

      网友评论

        本文标题:3、Spring Boot2 配置使用FastJson返回Jso

        本文链接:https://www.haomeiwen.com/subject/xluxoqtx.html