1. 程式人生 > >Spring MVC配置阿里巴巴 fastjson

Spring MVC配置阿里巴巴 fastjson

配置阿里巴巴Fastjson

  • 增加依賴包
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.38</version>
</dependency>
  • 方式1 mvc配置檔案中配置
<!--  啟動mvc 預設配置 -->
	<mvc:annotation-driven>
		<mvc:message-
converters register-defaults="true"> <!-- 配置fastjson --> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=utf-8</value> <value>
application/json</value> </list> </property> <property name="features"> <list> <value>WriteMapNullValue</value> <value>QuoteFieldNames</value> </list> </property> </bean> </mvc:message-converters>
</mvc:annotation-driven>

Fastjson的SerializerFeature序列化屬性:
QuoteFieldNames———-輸出key時是否使用雙引號,預設為true
WriteMapNullValue——–是否輸出值為null的欄位,預設為false
WriteNullNumberAsZero—-數值欄位如果為null,輸出為0,而非null
WriteNullListAsEmpty—–List欄位如果為null,輸出為[],而非null
WriteNullStringAsEmpty—字元型別欄位如果為null,輸出為”“,而非null
WriteNullBooleanAsFalse–Boolean欄位如果為null,輸出為false,而非null

fastjson入口類是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。

//序列化:轉換為json字串
  String jsonString = JSON.toJSONString(obj);
//反序列化: 將字串轉換為物件
JSON.parseObject("...", target.class);
  • 通過註解配置 FastJSON
    註解直接注入FastJsonHttpMessageConverter,通過@Bean注入HandlerAdapter來注入FastJsonHttpMessageConverter
/**
	 * 加入基於註解方式整合fastjson
	 * 可以參考新增如下配置.
	 */
	
	//整合fastjson庫
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    	//1.構建MessageConverter物件
    	FastJsonHttpMessageConverter msConverter = new FastJsonHttpMessageConverter();
    	//2.配置MessageConverter物件
    	//2.1設定fastjson基本配置
    	FastJsonConfig config = new FastJsonConfig();
    	config.setSerializeConfig(SerializeConfig.globalInstance);
    	//禁用迴圈引用問題
    	config.setSerializerFeatures(
    			SerializerFeature.DisableCircularReferenceDetect);
    	msConverter.setFastJsonConfig(config);
    	
    	//2.2 設定MessageConverter物件對媒體的支援
    	List<MediaType> list = new ArrayList<>();
    	list.add(new MediaType("text", "html", Charset.forName("utf-8")));
    	list.add(new MediaType("application", "json", Charset.forName("utf-8")));
    	msConverter.setSupportedMediaTypes(list);  	
    	//3.將MessageConverter物件新增到converters容器
		converters.add(msConverter);   	
    }

在這裡插入圖片描述