Spring boot 2

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

2019-05-04  本文已影响0人  咸鱼_3133

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.
上一篇下一篇

猜你喜欢

热点阅读