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

@JsonSerialize不起作用的解決方案

 更新時間:2021年10月13日 14:49:30   作者:不吃肉的小和尚  
這篇文章主要介紹了@JsonSerialize不起作用的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@JsonSerialize不起作用

在項(xiàng)目中 當(dāng)字段實(shí)體類為Long類型時

如果Long值超過前端js顯示的長度范圍時會導(dǎo)致前端回顯錯誤

此時我們想到的解決方案是將Long值返回給前端時轉(zhuǎn)為String,

但是我們又不想變更字段的類型,當(dāng)然我們也不想額外添加新的字段。

這個時候我們可以用@JsonSerialize,在Json序列化的時候把Long自動轉(zhuǎn)為String,

但是這里有個小坑

被轉(zhuǎn)換的字段必須是包裝類類型,否則會轉(zhuǎn)換失敗。

@JsonSerialize(using = ToStringSerializer.class)
private Long parentId;    //轉(zhuǎn)化成功
@JsonSerialize(using = ToStringSerializer.class)
private long parentId;    //轉(zhuǎn)化失敗

@JsonSerialize正確使用

實(shí)際開發(fā)中,我們一定遇到過這樣的問題:前端顯示和后臺存儲數(shù)據(jù)單位不統(tǒng)一,而且各有各自的理由,統(tǒng)一不了,那就只能由后端轉(zhuǎn)換。

每次返回給前端時再轉(zhuǎn)換一遍,返回給前端的json數(shù)據(jù),在后端里定義的往往是一個對象,如何做到優(yōu)雅的轉(zhuǎn)換呢?只需兩步操作:

1. 寫一個負(fù)責(zé)轉(zhuǎn)換的類

里面寫好規(guī)則

 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 = "新建狀態(tài)";
                 break;
             case 1:
                statusStr = "就緒狀態(tài)";
                 break;
             case 2:
                 statusStr = "運(yùn)行狀態(tài)";
                 break;
             case 3:
                 statusStr = "阻塞和喚醒線程";
                 break;
             case 4:
                statusStr = " 死亡狀態(tài)";
               break;
             default:
                 statusStr = "狀態(tài)信息不符合";
         }
         jsonGenerator.writeString(statusStr);
     }
 }

2. 在實(shí)體類上需要裝換的字段上加上注解

/**
 * 多線程生命周期狀態(tài)值
 */
@JsonSerialize(using = MySerializerUtils.class)
private int status;

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

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

相關(guān)文章

最新評論