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

基于@JsonSerialize和@JsonInclude注解使用方法

 更新時(shí)間:2021年10月13日 15:27:56   作者:Jesslili  
這篇文章主要介紹了@JsonSerialize和@JsonInclude注解使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@JsonSerialize和@JsonInclude注解

@JsonSerialize

后端開發(fā)時(shí)返回給前端的數(shù)據(jù)格式有時(shí)可能并不符合。

舉個(gè)例子,比如一張表中的時(shí)間,數(shù)據(jù)庫中存儲(chǔ)的是yyy-mm-dd hh:mm:ss 這樣的形式,而前段需要的是精確到秒的格式,這是就會(huì)出現(xiàn)問題。此時(shí)可以利用@JsonSerialize注解,改變返回給前端的json格式

@JsonSerialize注解,主要用于數(shù)據(jù)轉(zhuǎn)換,該注解作用在該屬性的getter()方法上。

使用步驟

1. 指定一個(gè)格式化的類

里面寫好規(guī)則

//JsonSerializer<Integer>:Integer為要轉(zhuǎn)換的類型
public class MySerializerUtils extends JsonSerializer<Integer> {
    @Override
    public void serialize(Integer status, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        String statusStr = "";
        switch (status) {
            case 0:
                statusStr = "暫存";
                break;
            case 1:
                statusStr = "待上報(bào)";
                break;
            case 2:
                statusStr = "待審核";
                break;
            case 3:
                statusStr = "已審";
                break;
            case 4:
                statusStr = "退回";
                break;
            case -1:
                statusStr = "已刪";
                break;
            default:
                statusStr = "狀態(tài)信息不符合";
        }
        jsonGenerator.writeString(statusStr);
    }
}

//JsonSerializer<Date>:Date為要轉(zhuǎn)換的類型
public class Date2LongSerializer extends JsonSerializer<Date> {
    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
       jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}

2. 在實(shí)體類中在要轉(zhuǎn)換的字段上加上該注解

@JsonSerialize(using = MySerializerUtils.class)
private int status;

//創(chuàng)建時(shí)間
@JsonSerialize(using = Date2LongSerializer.class)
private Date creatTime;
//更新時(shí)間
@JsonSerialize(using = Date2LongSerializer.class)
private Date updateTime;

@JsonInclude

返回前端的實(shí)體類中如果某個(gè)字段為空的話那么就不返回這個(gè)字段了

所以將@JsonInclude(Include.NON_NULL) 這個(gè)注解放在類頭上就可以解決。 實(shí)體類與json互轉(zhuǎn)的時(shí)候?qū)傩灾禐?null 的不參與序列化

JsonJsonInclude.Include.ALWAYS這個(gè)是默認(rèn)策略,任何情況下都序列化該字段,和不寫這個(gè)注解是一樣的效果。

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderDTO {
    private String orderId;
    private String buyerName;
    private String buyerPhone;
    private String buyerAddress;    
    private String buyerOpenid;
    List<OrderDetail> orderDetailList;//null,不返回
}

如果多個(gè)類都需要不返回null,挨個(gè)加注釋太麻煩了,可以全局設(shè)置,更改配置文件application.yml

spring:
  jackson:
    default-property-inclusion: non_null

如果List<OrderDetail> orderDetailList;需要返回一個(gè)空的list,但不能返回null,可以直接初始化

List<OrderDetail> orderDetailList = new ArrayList<>();

在這里插入圖片描述

同樣若要返回空字符而不是null,初始化

private String msr = "";
private String data;

在這里插入圖片描述

JSON @JsonSerialize 棄用問題解決方案

@JsonSerialize棄用spring boot中,返回json默認(rèn)是包含空串的,如果我們不想讓json返回null值,可以在bean上添加一些注解。

@JsonInclude(JsonInclude.Include.NON_EMPTY)​​

后面的枚舉值可以為

ALWAYS,
NON_NULL, // 屬性為NULL 不序列化,就是為null的字段不參加序列化    
NON_ABSENT, // 屬性為默認(rèn)值不序列化
NON_EMPTY, // 屬性為 空("") 或者為 NULL 都不序列化,則返回的json是沒有這個(gè)字段的。這樣對(duì)移動(dòng)端會(huì)更省流量
NON_DEFAULT,
CUSTOM,
USE_DEFAULTS;

調(diào)用

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MsgBean {}

Ps:好多資料上說的@JsonSerialize這個(gè)注解已經(jīng)被棄用了~

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

相關(guān)文章

  • 基于RecyclerChart的KLine繪制詳解

    基于RecyclerChart的KLine繪制詳解

    這篇文章主要為大家詳細(xì)介紹了基于RecyclerChart實(shí)現(xiàn)KLine繪制的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Java定時(shí)任務(wù)原理詳解

    Java定時(shí)任務(wù)原理詳解

    當(dāng)下,java編碼過程中,實(shí)現(xiàn)定時(shí)任務(wù)的方式主要以以下兩種為主:spring框架的@Scheduled和quzrtz框架。本文主要就二者的框架原理實(shí)現(xiàn)做一個(gè)入門引導(dǎo),為了解深層實(shí)現(xiàn)細(xì)節(jié)做一定的鋪墊
    2022-07-07
  • JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal

    JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal

    這篇文章主要給大家介紹了關(guān)于JAVA新手小白學(xué)正則表達(dá)式、包裝類、自動(dòng)裝箱/自動(dòng)拆箱以及BigDecimal的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java實(shí)現(xiàn)拆箱和裝箱的原理解析

    Java實(shí)現(xiàn)拆箱和裝箱的原理解析

    Java 是一種強(qiáng)類型語言,然而在 Java中Integer類型和 int類型兩種不同類型的數(shù)字卻能正常地進(jìn)行數(shù)學(xué)運(yùn)算,為什么?今天我們就來聊聊其背后的秘密:拆箱和裝箱,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • HTTPClient如何在Springboot中封裝工具類

    HTTPClient如何在Springboot中封裝工具類

    這篇文章主要介紹了HTTPClient如何在Springboot中封裝工具類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問題

    使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問題

    這篇文章主要介紹了使用java代碼實(shí)現(xiàn)一個(gè)月內(nèi)不再提醒,通用到期的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringCloud:feign對(duì)象傳參和普通傳參及遇到的坑解決

    SpringCloud:feign對(duì)象傳參和普通傳參及遇到的坑解決

    這篇文章主要介紹了SpringCloud:feign對(duì)象傳參和普通傳參及遇到的坑解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Web項(xiàng)目中編寫定時(shí)任務(wù)的實(shí)現(xiàn)

    Java Web項(xiàng)目中編寫定時(shí)任務(wù)的實(shí)現(xiàn)

    本篇文章主要介紹了Java Web項(xiàng)目中編寫定時(shí)任務(wù)的實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Java的Lombok之@Builder使用總結(jié)

    Java的Lombok之@Builder使用總結(jié)

    這篇文章主要介紹了Java的Lombok之@Builder使用總結(jié),當(dāng)不使用@Builder注解到類上,創(chuàng)建T1的有參構(gòu)造函數(shù),入?yún)⒉粌H包括T1中所有的參數(shù),還包括T中所有的參數(shù),T2的屬性由T1在有參構(gòu)造函數(shù)中通過調(diào)用父類構(gòu)造器的方式賦初值,需要的朋友可以參考下
    2023-12-12
  • SpringBoot自定義starter實(shí)例代碼

    SpringBoot自定義starter實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于SpringBoot自定義starter的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

招远市| 阿图什市| 青海省| 读书| 济宁市| 额尔古纳市| 瑞昌市| 无锡市| 同德县| 邛崃市| 武乡县| 浪卡子县| 策勒县| 仁怀市| 卓资县| 延长县| 香河县| 万盛区| 金塔县| 都安| 鹰潭市| 章丘市| 滦平县| 东乡县| 丹阳市| 汪清县| 延边| 兴仁县| 九龙县| 怀远县| 汤原县| 台南县| 宁南县| 建瓯市| 馆陶县| 江津市| 农安县| 益阳市| 伊金霍洛旗| 宣化县| 颍上县|