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

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

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

@JsonSerialize和@JsonInclude注解

@JsonSerialize

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

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

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

使用步驟

1. 指定一個格式化的類

里面寫好規(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 = "待上報";
                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. 在實體類中在要轉(zhuǎn)換的字段上加上該注解

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

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

@JsonInclude

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

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

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

@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,不返回
}

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

spring:
  jackson:
    default-property-inclusion: non_null

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

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

在這里插入圖片描述

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

private String msr = "";
private String data;

在這里插入圖片描述

JSON @JsonSerialize 棄用問題解決方案

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

@JsonInclude(JsonInclude.Include.NON_EMPTY)​​

后面的枚舉值可以為

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

調(diào)用

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

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

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

相關文章

  • Spring Boot無縫集成MongoDB

    Spring Boot無縫集成MongoDB

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

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

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

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

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

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

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

    淺析JVM的垃圾回收器

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

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

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

    java設計模式之觀察者模式

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

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

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

    java?Object的hashCode方法的計算邏輯分析

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

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

    我們在網(wǎng)站上注冊賬號的時候一般需要獲取驗證碼,而這個驗證碼一般發(fā)送在你的手機號上還有的是發(fā)送在你的郵箱中,注冊,賬號密碼…都需要用到驗證,今天就演示一下如何用SpringBoot整合Mail發(fā)送郵箱
    2021-11-11

最新評論