亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

@JsonSerialize序列化注解的使用

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

@JsonSerialize序列化注解

JSON 是數(shù)據(jù)交換的通用格式

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

Jackson 是一個流行的 Java 庫,用于處理 JSON 數(shù)據(jù)的序列化和反序列化??梢栽谧侄?、方法或者類級上自定義序列化類。有using 屬性,允許指定一個自定義的序列化器(Serializer)類,來決定如何將 Java 對象轉(zhuǎn)換為 JSON 數(shù)據(jù)。

用來自定義需要轉(zhuǎn)換為JSON數(shù)據(jù),可以用在類上,自定義對這個類的JSON處理,也可以用在字段上自定義對字段的處理,例如日期格式、小數(shù)點保留幾位,是否準(zhǔn)換為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 {
 
    //使用方法,直接加載需要保留小數(shù)的字段上
    @JsonSerialize(using = Customer1DoubleSerialize.class)
    private Double num;
 
    @ApiModelProperty("id")
    private String Id;
 
    @ApiModelProperty("名")
    private String name;
 
    @ApiModelProperty("數(shù)據(jù)類型")
    @ExcelProperty(converter = UnitConverter.class)
    private String dataType;
 
 
}

小數(shù)點保留一位數(shù)

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());
 
        }
    }
}

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

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導(dǎo)出的時候——拼接單位

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);
    }
}

總結(jié)

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

相關(guān)文章

  • java向上轉(zhuǎn)型與向下轉(zhuǎn)型詳解

    java向上轉(zhuǎn)型與向下轉(zhuǎn)型詳解

    這篇文章主要為大家詳細介紹了java向上轉(zhuǎn)型與向下轉(zhuǎn)型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項訓(xùn)練

    劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項訓(xùn)練

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Java中的CyclicBarrier循環(huán)柵欄深入解析

    Java中的CyclicBarrier循環(huán)柵欄深入解析

    這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄深入解析,CycleBarrier 它就相當(dāng)于是一個柵欄,所有線程在到達柵欄后都需要等待其他線程,等所有線程都到達后,再一起通過,需要的朋友可以參考下
    2023-12-12
  • Ubuntu搭建Java開發(fā)環(huán)境筆記

    Ubuntu搭建Java開發(fā)環(huán)境筆記

    這篇文章主要介紹了Ubuntu搭建Java開發(fā)環(huán)境筆記,本文講解了JDK安裝、MyEclipse安裝及第一個Hello world程序等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 關(guān)于Java HashMap自動排序的簡單剖析

    關(guān)于Java HashMap自動排序的簡單剖析

    這篇文章主要給大家介紹了關(guān)于Java HashMap自動排序的簡單剖析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java中transient關(guān)鍵字用法分析

    java中transient關(guān)鍵字用法分析

    這篇文章主要介紹了java中transient關(guān)鍵字用法,以實例形式分析了java中transient關(guān)鍵字的功能及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 基于OpenID?Connect及Token?Relay實現(xiàn)Spring?Cloud?Gateway

    基于OpenID?Connect及Token?Relay實現(xiàn)Spring?Cloud?Gateway

    這篇文章主要介紹了基于OpenID?Connect及Token?Relay實現(xiàn)Spring?Cloud?Gateway,Spring?Cloud?Gateway旨在提供一種簡單而有效的方式來路由到API,并為API提供跨領(lǐng)域的關(guān)注點,如:安全性、監(jiān)控/指標(biāo)和彈性
    2022-06-06
  • spring導(dǎo)入framework報紅問題

    spring導(dǎo)入framework報紅問題

    這篇文章主要介紹了spring導(dǎo)入framework報紅問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 解析Java的InputStream類并借助其讀取ppt文件

    解析Java的InputStream類并借助其讀取ppt文件

    這篇文章主要介紹了Java的InputStream類并借助其讀取ppt文件,講到了InputStream類中一些常用的方法的問題,需要的朋友可以參考下
    2015-11-11
  • java基于Socket做一個簡單下載器

    java基于Socket做一個簡單下載器

    這篇文章主要為大家詳細介紹了java如何基于Socket制作一個簡單下載器,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論