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

@JsonSerialize序列化注解的使用

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

@JsonSerialize序列化注解

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

@JsonSerialize注解是Jackson 庫(kù)中的一部分,用于定義在將 Java 對(duì)象序列化為 JSON 格式時(shí),如何進(jìn)行定制化處理的方式。

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

用來(lái)自定義需要轉(zhuǎn)換為JSON數(shù)據(jù),可以用在類(lèi)上,自定義對(duì)這個(gè)類(lèi)的JSON處理,也可以用在字段上自定義對(duì)字段的處理,例如日期格式、小數(shù)點(diǎn)保留幾位,是否準(zhǔn)換為1或0

先創(chuàng)建一個(gè)類(lèi)

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ù)類(lèi)型")
    @ExcelProperty(converter = UnitConverter.class)
    private String dataType;
 
 
}

小數(shù)點(diǎn)保留一位數(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ù)點(diǎn)保留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)出的時(shí)候——拼接單位

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é)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析

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

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

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

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

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

    spring導(dǎo)入framework報(bào)紅問(wèn)題

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

    解析Java的InputStream類(lèi)并借助其讀取ppt文件

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

    java基于Socket做一個(gè)簡(jiǎn)單下載器

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

最新評(píng)論