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

@JsonSerialize序列化注解的使用

 更新時間:2024年08月23日 08:35:48   作者:200.OK  
這篇文章主要介紹了@JsonSerialize序列化注解的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

@JsonSerialize序列化注解

JSON 是數據交換的通用格式

@JsonSerialize注解是Jackson 庫中的一部分,用于定義在將 Java 對象序列化為 JSON 格式時,如何進行定制化處理的方式。

Jackson 是一個流行的 Java 庫,用于處理 JSON 數據的序列化和反序列化??梢栽谧侄巍⒎椒ɑ蛘哳惣壣献远x序列化類。有using 屬性,允許指定一個自定義的序列化器(Serializer)類,來決定如何將 Java 對象轉換為 JSON 數據。

用來自定義需要轉換為JSON數據,可以用在類上,自定義對這個類的JSON處理,也可以用在字段上自定義對字段的處理,例如日期格式、小數點保留幾位,是否準換為1或0

先創(chuàng)建一個類

package com.test.hello.vo;
 
import com.test.hello.utils.Customer1DoubleSerialize;
import com.test.hello.utils.CustomerDoubleSerialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TestVo {
 
    //使用方法,直接加載需要保留小數的字段上
    @JsonSerialize(using = Customer1DoubleSerialize.class)
    private Double num;
 
    @ApiModelProperty("id")
    private String Id;
 
    @ApiModelProperty("名")
    private String name;
 
    @ApiModelProperty("數據類型")
    @ExcelProperty(converter = UnitConverter.class)
    private String dataType;
 
 
}

小數點保留一位數

package com.test.hello.utils;
 
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
 
import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
 
public class Customer1DoubleSerialize extends JsonSerializer {
    private DecimalFormat df = new DecimalFormat("0.0");
    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        df.setRoundingMode(RoundingMode.HALF_DOWN);
        if(o.toString() != null && !"-".equals(o)) {
            Double dd=Double.parseDouble(o.toString());
 
            jsonGenerator.writeString(df.format(dd));
 
        } else{
            jsonGenerator.writeString(o.toString());
 
        }
    }
}

小數點保留2位數(保留三位同理定義三位小數即可)

package com.test.hello.utils;
 
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
 
import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
 
public class CustomerDoubleSerialize extends JsonSerializer {
    private DecimalFormat df = new DecimalFormat("0.00");
    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        df.setRoundingMode(RoundingMode.HALF_DOWN);
        if(o.toString() != null && !"-".equals(o)) {
            Double dd=Double.parseDouble(o.toString());
 
            jsonGenerator.writeString(df.format(dd));
 
        } else{
            jsonGenerator.writeString(o.toString());
 
        }
    }
}

在excel導出的時候——拼接單位

package com.test.hello.utils;
 
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
 
public class UnitConverter implements Converter<String> {
    @Override
    public Class<?> supportJavaTypeKey() {
        return Converter.super.supportJavaTypeKey();
    }
 
    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return Converter.super.supportExcelTypeKey();
    }
 
    @Override
    public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        String dateValue = "";
        if (value.equals("2D")) {
            dateValue = "km";
        } else if (value.equals("3D")) {
            dateValue = "km2";
        }
        return new WriteCellData<>(dateValue);
    }
}

總結

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

相關文章

  • Java并發(fā)機制的底層實現原理分析

    Java并發(fā)機制的底層實現原理分析

    本文主要介紹了Java中并發(fā)編程中常用的一些機制,包括volatile、synchronized和原子操作,volatile是輕量級的同步機制,保證了共享變量的可見性;synchronized是一種重量級的同步機制,通過加鎖和解鎖來保證線程安全
    2025-01-01
  • 僅用5分鐘極速入門Dubbo使用教程

    僅用5分鐘極速入門Dubbo使用教程

    今天給大家介紹一款高性能、透明的遠程過程調用框架dubbo,通過本文學習可以快速掌握Dubbo知識,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • java ant包中的org.apache.tools.zip實現壓縮和解壓縮實例詳解

    java ant包中的org.apache.tools.zip實現壓縮和解壓縮實例詳解

    這篇文章主要介紹了java ant包中的org.apache.tools.zip實現壓縮和解壓縮實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • java匿名內部類實例簡析

    java匿名內部類實例簡析

    匿名類是不能有名稱的類,所以沒辦法引用它們,必須在創(chuàng)建時,作為new語句的一部分來聲明它們,需要了解更多的可以參考本文
    2012-11-11
  • springboot實現用戶名查找用戶功能

    springboot實現用戶名查找用戶功能

    本文主要介紹了springboot實現用戶名查找用戶功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • java 數據結構之堆排序(HeapSort)詳解及實例

    java 數據結構之堆排序(HeapSort)詳解及實例

    這篇文章主要介紹了java 數據結構之堆排序(HeapSort)詳解及實例的相關資料,需要的朋友可以參考下
    2017-03-03
  • Java開發(fā)常見異常及解決辦法詳解

    Java開發(fā)常見異常及解決辦法詳解

    這篇文章主要介紹了java程序常見異常及處理匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • Java根據URL下載文件到本地的2種方式(大型文件與小型文件)

    Java根據URL下載文件到本地的2種方式(大型文件與小型文件)

    這篇文章主要給大家介紹了關于Java根據URL下載文件到本地的2種方式,分別是大型文件與小型文件,避免內存溢出OOM,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Hibernate緩存詳解

    Hibernate緩存詳解

    本文主要介紹了Hibernate緩存的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java實現讀取CSV文件并將數據放入對象

    Java實現讀取CSV文件并將數據放入對象

    CSV文件是一種常見的數據存儲格式,廣泛應用于數據交換,日志記錄和表格數據處理,在Java開發(fā)中,讀取CSV文件并將數據映射到對象中是常見的需求,本文將詳細介紹幾種常見方法,有需要的可以了解下
    2025-06-06

最新評論

上思县| 宝清县| 昆山市| 吉安市| 普定县| 武隆县| 精河县| 汾阳市| 肇庆市| 东乌珠穆沁旗| 定边县| 康马县| 嘉兴市| 湄潭县| 辽源市| 渑池县| 广州市| 贞丰县| 阿城市| 永新县| 大冶市| 靖安县| 钟山县| 会东县| 邵阳市| 北辰区| 普洱| 陵水| 宁蒗| 乐至县| 宜川县| 临夏县| 措美县| 台中市| 安平县| 正定县| 娄烦县| 峨眉山市| 永德县| 比如县| 宁陵县|