Spring MVC配置阿里巴巴 fastjson
阿新 • • 發佈:2019-01-01
配置阿里巴巴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);
}