java開發工具(8)你還在手動寫代碼修改出參格式麼?快用註解方式吧


在你的代碼中,你一定修改過出參格式把,例如把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版本較低,你只轉換年月日,還會返回時分秒,此處要注意。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章