欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于@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)文章

  • Spring Boot無縫集成MongoDB

    Spring Boot無縫集成MongoDB

    這篇文章主要介紹了Spring Boot無縫集成MongoDB的相關(guān)知識(shí),本文涉及到MongoDB的概念和nosql的應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2017-04-04
  • java實(shí)現(xiàn)模擬RPG格斗

    java實(shí)現(xiàn)模擬RPG格斗

    這篇文章主要介紹了java實(shí)現(xiàn)模擬RPG格斗,每個(gè)英雄具有以下幾個(gè)屬性:生命值(為0時(shí)英雄倒下)、攻擊力(每次攻擊時(shí)扣除對(duì)方的生命值點(diǎn)數(shù))、攻擊間隔(每次攻擊過后都要等待間隔時(shí)間才能進(jìn)行下次攻擊首次攻擊之前也要先等待間隔時(shí)間)簡單設(shè)置了下吧,小伙伴可以參考下
    2015-03-03
  • java集合中l(wèi)ist的用法代碼示例

    java集合中l(wèi)ist的用法代碼示例

    這篇文章主要介紹了java集合中l(wèi)ist的用法代碼示例,分享了相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解

    Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解

    這篇文章主要為大家介紹了Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 淺析JVM的垃圾回收器

    淺析JVM的垃圾回收器

    這篇文章主要介紹了JVM垃圾回收器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java虛擬機(jī)的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11
  • 詳解JUC 常用4大并發(fā)工具類

    詳解JUC 常用4大并發(fā)工具類

    這篇文章主要介紹了JUC 常用4大并發(fā)工具類的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java 并發(fā)編程,感興趣的朋友可以了解下
    2020-10-10
  • java設(shè)計(jì)模式之觀察者模式

    java設(shè)計(jì)模式之觀察者模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之觀察者模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 如何使用Java將word解析出來(包含格式和圖片)

    如何使用Java將word解析出來(包含格式和圖片)

    今天遇到一個(gè)讀取word模板內(nèi)容的需求,下面這篇文章主要給大家介紹了關(guān)于如何使用Java將word解析出來,包含格式和圖片,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • java?Object的hashCode方法的計(jì)算邏輯分析

    java?Object的hashCode方法的計(jì)算邏輯分析

    這篇文章主要介紹了java?Object的hashCode方法的計(jì)算邏輯分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot整合Mail發(fā)送郵件功能

    SpringBoot整合Mail發(fā)送郵件功能

    我們?cè)诰W(wǎng)站上注冊(cè)賬號(hào)的時(shí)候一般需要獲取驗(yàn)證碼,而這個(gè)驗(yàn)證碼一般發(fā)送在你的手機(jī)號(hào)上還有的是發(fā)送在你的郵箱中,注冊(cè),賬號(hào)密碼…都需要用到驗(yàn)證,今天就演示一下如何用SpringBoot整合Mail發(fā)送郵箱
    2021-11-11

最新評(píng)論