在你的代碼中,你一定修改過出參格式把,例如把Date格式轉換成年月日時分秒返回給前端,例如,因爲Long型在前端有精度缺失的問題,把Long型轉換爲String類型返回給前端。如果你用代碼手動去轉,例如這樣
DateUtils.format(new Date(),"YYYY-MM-DD");
再把值設置進去,挺耗費時間的,如果只是一行註解解決問題,是不是簡單很多呢,如下所示:
@JSONField(serializeUsing = ToStringSerializer.class)
private Long id;
這就是我們要講的fastJson與Springboot的融合。
一、怎麼引入fastJson的轉換
你只需要加一段如下代碼,便可引入fastJson
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
25
* 使用fastjson代替jackson
26
* @param converters
27
*/
28
@Override
29
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
42
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
43
44
//自定義fastjson配置
45
FastJsonConfig config = new FastJsonConfig();
46
config.setSerializerFeatures(
SerializerFeature.WriteDateUseDateFormat,
SerializerFeature.DisableCircularReferenceDetect
53
);
54
fastJsonHttpMessageConverter.setFastJsonConfig(config);
converters.add(fastJsonHttpMessageConverter);
}
64
}
二、怎麼使用
在引入了fastJson的全局配置後,如何使用呢?方式如下:
@JSONField(format = "yyyy年MM月dd日")
private Date birthDay;
此時你的日期格式出來就是format的格式了。
三、轉換的原理是什麼
轉換的原理要結合源碼去講解,在我的另一篇博文java開發工具(9)fastJson註解是如何映射成指定出參格式的(源碼解析)中有具體說明。
四、總結
關於類型的轉換,我們能用註解是比用代碼轉換要好的,出現問題的可能性也小很多,最關鍵的是可以提升效率。但是有一些注意點,我在此說明下
- 註解的返回樣式一定要統一,在fastJson中有一個配置數字類型轉換String,如果爲null會返回“0”,這個要去掉:
SerializerFeature.WriteNullNumberAsZero,
- @DateTimeFormat註解既可以轉換入參也可以轉換出參,轉換出參的時候,如果用的是SpringBoot2以上的沒有問題,如果SpringBoot版本較低,你只轉換年月日,還會返回時分秒,此處要注意。