最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

java中的JsonSerializer用法

背景

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

演示

解決方法

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

1. 寫一個(gè)負(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)建時(shí)間
    @JsonSerialize(using = Date2LongSerializer.class)//時(shí)間戳將Date轉(zhuǎn)成Long
    private Date categoryTime;
    //修改時(shí)間
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTime;

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

JackJson中自定義JsonSerializer使用

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

遇到這種問題,可以使用JackJson的@JsonSerialize,具體實(shí)現(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、在實(shí)體類的字段上

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

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

3、使用效果

b70a71ea72bc424a22e8e142c6cc8e8b687.jpg

8e83b36ec9d2e803af65a505ba25248a7b7.jpg

其實(shí)使用SpringBoot的@RestController注解,我們最終返回的結(jié)果集都會(huì)被轉(zhuǎn)換為Json信息,那么就沒有類型而言,因?yàn)槎际荢tring格式的了。

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

相關(guān)文章

  • Java結(jié)構(gòu)型設(shè)計(jì)模式之裝飾模式詳解

    Java結(jié)構(gòu)型設(shè)計(jì)模式之裝飾模式詳解

    裝飾模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有類的一個(gè)包裝。這種模式創(chuàng)建了一個(gè)裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能
    2023-03-03
  • Java之MultipartFile和File類型互轉(zhuǎn)方式

    Java之MultipartFile和File類型互轉(zhuǎn)方式

    這篇文章主要介紹了Java之MultipartFile和File類型互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式

    SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式

    這篇文章主要介紹了SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java Disruptor構(gòu)建高性能內(nèi)存隊(duì)列使用詳解

    java Disruptor構(gòu)建高性能內(nèi)存隊(duì)列使用詳解

    這篇文章主要為大家介紹了java Disruptor構(gòu)建高性能內(nèi)存隊(duì)列使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Struts中使用validate()輸入校驗(yàn)方法詳解

    Struts中使用validate()輸入校驗(yàn)方法詳解

    這篇文章主要介紹了Struts中使用validate()輸入校驗(yàn)方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • 通過實(shí)例解析spring對(duì)象生命周期

    通過實(shí)例解析spring對(duì)象生命周期

    這篇文章主要介紹了通過實(shí)例解析spring對(duì)象生命周期,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    這篇文章主要介紹了Java的Flowable工作流之加簽轉(zhuǎn)簽詳解,Flowable是一個(gè)開源的工作流引擎,它提供了一套強(qiáng)大的工具和功能,用于設(shè)計(jì)、執(zhí)行和管理各種類型的工作流程,需要的朋友可以參考下
    2023-11-11
  • 詳解OpenAPI開發(fā)如何動(dòng)態(tài)的添加接口實(shí)現(xiàn)

    詳解OpenAPI開發(fā)如何動(dòng)態(tài)的添加接口實(shí)現(xiàn)

    這篇文章主要為大家介紹了OpenAPI開發(fā)如何動(dòng)態(tài)的添加接口實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java使用JaCoCo進(jìn)行代碼覆蓋率分析的操作指南

    Java使用JaCoCo進(jìn)行代碼覆蓋率分析的操作指南

    JaCoCo是一個(gè)開源的 Java 代碼覆蓋率工具,廣泛應(yīng)用于測(cè)試過程中,它可以幫助開發(fā)者分析測(cè)試代碼的覆蓋情況,在本文中,我們將介紹 JaCoCo 的基本功能、如何集成到 Maven 項(xiàng)目中,以及通過具體案例展示如何生成覆蓋率報(bào)告,需要的朋友可以參考下
    2025-02-02
  • SpringBoot日志配置SLF4J和Logback的方法實(shí)現(xiàn)

    SpringBoot日志配置SLF4J和Logback的方法實(shí)現(xiàn)

    日志記錄是不可或缺的一部分,本文主要介紹了SpringBoot日志配置SLF4J和Logback的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04

最新評(píng)論

博白县| 龙南县| 正安县| 昂仁县| 抚远县| 上思县| 武鸣县| 永靖县| 新巴尔虎左旗| 九江县| 泉州市| 河源市| 个旧市| 板桥市| 油尖旺区| 墨玉县| 岳普湖县| 中宁县| 浪卡子县| 大余县| 博客| 射洪县| 余江县| 多伦县| 威信县| 桐梓县| 那曲县| 方城县| 灯塔市| 永仁县| 洛宁县| 特克斯县| 南乐县| 精河县| 崇州市| 宝应县| 赫章县| 阿巴嘎旗| 雷州市| 巴马| 宜春市|