亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備

 更新時間:2021年10月13日 15:08:22   作者:xiaozhengtongxue  
這篇文章主要介紹了java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備!具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java中的JsonSerializer用法

背景

今天在寫項目的時候遇到一個問題,項目中有個類中有創(chuàng)建時間和更新時間兩個屬性,但是單位在后端用的是Date,而前端給的API中用的是秒。這就涉及到單位的轉(zhuǎn)換問題。但是如何優(yōu)雅地對單位進(jìn)行轉(zhuǎn)化呢?

演示

解決方法

利用@JsonSerialize注解,可以方便地實現(xiàn)將date數(shù)據(jù)轉(zhuǎn)換成long型數(shù)據(jù)等功能,該注解作用在屬性的getter()方法上。

1. 寫一個負(fù)責(zé)轉(zhuǎn)換的類,繼承自JsonSerializer類,里面寫好規(guī)則

public class Date2LongSerializer extends JsonSerializer<Date> {
    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {//把Date轉(zhuǎn)成Long
        jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}

2. 在返回的參數(shù)里加上注解@JsonSerialize(using = XXX.class) XXX為上一步新建的轉(zhuǎn)換類

    //創(chuàng)建時間
    @JsonSerialize(using = Date2LongSerializer.class)//時間戳將Date轉(zhuǎn)成Long
    private Date categoryTime;
    //修改時間
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTime;

這樣就完成了時間戳的轉(zhuǎn)換。

JackJson中自定義JsonSerializer使用

最近在做一個需求,一個時間字段,數(shù)據(jù)庫類型為timestamp,默認(rèn)值為'1970-01-01 08:00:01',產(chǎn)品要求這種情況展示為“-1”,實體類中的屬性類型為Date,我也不能把Date屬性值設(shè)置為“-1”,又不想新加一個String類型的屬性,那怎么辦呢?

遇到這種問題,可以使用JackJson的@JsonSerialize,具體實現(xiàn)如下:

1、自定義類繼承JsonSerializer

public class DefaultTimeSerializer extends JsonSerializer<Date> {
   /**
    * Method that can be called to ask implementation to serialize
    * values of type this serializer handles.
    *
    * @param value       Value to serialize; can <b>not</b> be null.
    * @param gen         Generator used to output resulting Json content
    * @param serializers Provider that can be used to get serializers for
    */
   @Override
   public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
      if (THOUSAND_MILLISECOND.equals(value.getTime())) {
         gen.writeString("-1");
      } else {
         gen.writeString(DateUtils.dateFormat(value, DateUtils.MONTH_PATTERN));
      }
   }
}

2、在實體類的字段上

使用@JsonSerialize注解,并且指定要使用的Serializer

/**
 * 日期(精確到月)
 */
@JsonSerialize(using = DefaultTimeSerializer.class)
private Date Time;

3、使用效果

b70a71ea72bc424a22e8e142c6cc8e8b687.jpg

8e83b36ec9d2e803af65a505ba25248a7b7.jpg

其實使用SpringBoot的@RestController注解,我們最終返回的結(jié)果集都會被轉(zhuǎn)換為Json信息,那么就沒有類型而言,因為都是String格式的了。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例

    Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例

    這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java中的隨機(jī)數(shù)詳解

    Java中的隨機(jī)數(shù)詳解

    這篇文章主要介紹了Java中的隨機(jī)數(shù),需要的朋友可以參考下
    2014-02-02
  • springboot oauth2實現(xiàn)單點登錄實例

    springboot oauth2實現(xiàn)單點登錄實例

    我們見過的很多網(wǎng)站,容許使用第三方賬號登錄,oauth2是用來做三方登錄的,本文就詳細(xì)的介紹springboot oauth2實現(xiàn)單點登錄實例,具有一定的參考價值,感興趣的可以了解一下
    2022-01-01
  • Java泛型枚舉Annotation接口詳細(xì)解讀與Eclipse發(fā)展

    Java泛型枚舉Annotation接口詳細(xì)解讀與Eclipse發(fā)展

    這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java中4種經(jīng)典限流算法講解

    Java中4種經(jīng)典限流算法講解

    本文主要介紹了Java中4種經(jīng)典限流算法講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級問題

    SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級問題

    這篇文章主要介紹了SpringBoot上傳文件到本服務(wù)器 目錄與jar包同級問題,需要的朋友可以參考下
    2018-11-11
  • Spring核心容器之Bean創(chuàng)建過程詳解

    Spring核心容器之Bean創(chuàng)建過程詳解

    這篇文章主要介紹了Spring核心容器之Bean創(chuàng)建過程詳解,獲取?Bean?的方法是?getBean,其來自?BeanFactory?繼承的AbstractAutowireCapableBeanFactory?抽象類繼承的AbstractBeanFactory?抽象類中,需要的朋友可以參考下
    2023-11-11
  • Java中圖片的常用操作代碼總結(jié)

    Java中圖片的常用操作代碼總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Java中對圖片進(jìn)行常用操作處理的代碼,例如生成自定義圖片、獲取圖片格式、圖片的裁剪與壓縮等,感興趣的小伙伴可以了解一下
    2022-11-11
  • Java中Cglib代理和JDK代理的區(qū)別詳解

    Java中Cglib代理和JDK代理的區(qū)別詳解

    這篇文章主要介紹了Java中Cglib代理和JDK代理的區(qū)別詳解,Cglib代理功能更強(qiáng),無論目標(biāo)類是否實現(xiàn)了接口都可以代理,他是基于繼承的方式來代理目標(biāo)類,如果目標(biāo)類也實現(xiàn)了接口,代理類也會實現(xiàn)一次,需要的朋友可以參考下
    2023-09-09
  • jenkins中如何集成commander應(yīng)用的完整步驟

    jenkins中如何集成commander應(yīng)用的完整步驟

    jenkins是一個用java編寫的開源的持續(xù)集成工具,在與oracle發(fā)生爭執(zhí)后,項目從hudson項目獨立出來,下面這篇文章主要給大家介紹了關(guān)于jenkins中如何集成commander應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05

最新評論