一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備

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

2022-02-19 14:38xiaozhengtongxue Java教程

這篇文章主要介紹了java中的JsonSerializer用法,前后端單位轉(zhuǎn)換必備!具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java中的JsonSerializer用法

背景

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

演示

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

解決方法

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

1. 寫(xiě)一個(gè)負(fù)責(zé)轉(zhuǎn)換的類,繼承自JsonSerializer類,里面寫(xiě)好規(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)換。

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

 

JackJson中自定義JsonSerializer使用

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

遇到這種問(wèn)題,可以使用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、使用效果

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

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

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

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

原文鏈接:https://www.cnblogs.com/xiaozhengtongxue/p/13442727.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 暖暖中国免费观看高清完整版 | avtt在线播放 | 欧美乱妇高清无乱码视频在线 | 糖心在线观看网 | 啪一啪在线视频 | 亚洲日韩男人网在线 | 亚洲天堂在线视频观看 | 青青久久精品国产免费看 | 国产成人综合久久精品红 | 视频国产精品 | chinese军人@gay | 亚洲天堂网在线观看视频 | 日本人成大片在线 | 四虎麻豆 | 99久久精品免费看国产情侣 | 欧美一级久久久久久久大片 | 国产99热99| 2012在线观看免费视频大全 | 欧美精品亚洲精品日韩专区va | 日本私人影院 | 日韩乱淫 | 日本高清在线不卡 | 色啪久久婷婷综合激情 | 日本一在线中文字幕天堂 | 精品综合 | 俄罗斯一级毛片免费播放 | 91麻豆国产精品91久久久 | 日韩一区视频在线 | 为什么丈夫插我我却喜欢被打着插 | 99久久久无码国产精品 | 99人中文字幕亚洲区 | 鬼吹灯之天星术免费观看 | 男女视频在线观看网站 | 青苹果乐园影院免费观看完整版 | 色亚洲视频 | 亚洲色大成网站www久久九九 | 四虎精品在线观看 | v视界影院.vsjla| 91精品啪在线观看国产91九色 | 国产视频一区在线观看 | 91伊人网|