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

Java中json格式化BigDecimal保留2位小數(shù)

 更新時(shí)間:2023年09月22日 10:03:47   作者:小范同學(xué)_  
這篇文章主要給大家介紹了關(guān)于Java中json格式化BigDecimal保留2位小數(shù)的相關(guān)資料,BigDecimal是Java中的一個(gè)數(shù)學(xué)庫,可以實(shí)現(xiàn)高精度計(jì)算,文中給出了詳細(xì)的代碼實(shí)例,需要的朋友可以參考下

場景

如下,在處理錢相關(guān)的業(yè)務(wù)時(shí),接口明明已經(jīng)保留了兩位小數(shù) 1.00 ,但前端接收的時(shí)候獲取的卻是 1 ,小數(shù)點(diǎn)后面的‘0’沒了。

@Data
public class UserVo {
    long id;
    String name;
    BigDecimal money;
}

其實(shí),需要在 BigDecimal 參與 json 轉(zhuǎn)化時(shí),將其轉(zhuǎn)化成 String 類型即可。

一. Jackson的處理方式

1.編寫一個(gè)類,實(shí)現(xiàn) JsonSerializer ,并實(shí)現(xiàn) serialize 方法

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.BigDecimal;
public class BigDecimalSerialize extends JsonSerializer{
    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if(o != null && o instanceof BigDecimal){
            BigDecimal bigDecomal = (BigDecimal) o;
            jsonGenerator.writeString(bigDecomal.setScale(2,BigDecimal.ROUND_DOWN)+"");
        }
    }
}

2.在需要特殊處理的屬性上加上這個(gè)注解 @JsonSerialize ,并將第一步創(chuàng)建好的類名加到參數(shù)中

@JsonSerialize(using = BigDecimalSerialize.class)
BigDecimal money;

以下是在測試類中測試的場景

@Test
    public void jacksonFormat() throws JsonProcessingException {
        UserVo userVo = new UserVo();
        userVo.setMoney(new BigDecimal(1.000));
        ObjectMapper mapper = new ObjectMapper();
        String result=mapper.writeValueAsString(userVo);
        System.out.println("result = " + result);
    }

看下測試結(jié)果,成功保留了對(duì)應(yīng)的小數(shù)位數(shù),并幫我們轉(zhuǎn)成了String類型,很完美

二. FastJson的處理方式

1.編寫一個(gè)類,實(shí)現(xiàn) ValueFilter ,并實(shí)現(xiàn) process 方法

import com.alibaba.fastjson.serializer.ValueFilter;
import java.math.BigDecimal;
public class BigDecimalValueFilter implements ValueFilter {
	@Override
    public Object process(Object object,String name,Object value){
        if(null != value&&value instanceof BigDecimal){
            BigDecimal bigDecimal = (BigDecimal) value;
            return bigDecimal.setScale(5,BigDecimal.ROUND_DOWN).toString();
        }
        return value;
    }
}

2.使用的時(shí)候需要在后面加上我們自定義的的類對(duì)象,如下

JSON.parseObject(JSON.toJSONString(userVo, new BigDecimalValueFilter()))

同樣測試下看看效果如何

@Test
    public void fastJsonFormat(){
        UserVo userVo = new UserVo();
        userVo.setMoney(new BigDecimal(1.000));
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(userVo, new BigDecimalValueFilter()));
        System.out.println("jsonObject = " + jsonObject);
    }

打印結(jié)果

總結(jié)

到此這篇關(guān)于Java中json格式化BigDecimal保留2位小數(shù)的文章就介紹到這了,更多相關(guān)json格式化BigDecimal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Calendar類使用總結(jié)及使用實(shí)例

    Java Calendar類使用總結(jié)及使用實(shí)例

    這篇文章主要介紹了Java Calendar類使用總結(jié)及使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java中如何判斷中文字符串長度

    Java中如何判斷中文字符串長度

    這篇文章主要介紹了Java中如何判斷中文字符串長度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • FastJSON字段智能匹配踩坑的解決

    FastJSON字段智能匹配踩坑的解決

    這篇文章主要介紹了FastJSON字段智能匹配踩坑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題

    關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題

    這篇文章主要介紹了關(guān)于IDEA 2020使用 mybatis-log-plugin插件的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • mybatis?selectKey賦值未生效的原因分析

    mybatis?selectKey賦值未生效的原因分析

    這篇文章主要介紹了mybatis?selectKey賦值未生效的原因分析,selectKey 會(huì)將 SELECT LAST_INSERT_ID()的結(jié)果放入到傳入的實(shí)體類的主鍵里面,文中通過代碼示例給大家講解非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Maven中resources標(biāo)簽的用法詳解

    Maven中resources標(biāo)簽的用法詳解

    本文主要介紹了Maven中resources標(biāo)簽的用法詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Mybatis批量插入返回插入成功后的主鍵id操作

    Mybatis批量插入返回插入成功后的主鍵id操作

    這篇文章主要介紹了Mybatis批量插入返回插入成功后的主鍵id操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Java靜態(tài)代理與動(dòng)態(tài)代理案例詳解

    Java靜態(tài)代理與動(dòng)態(tài)代理案例詳解

    這篇文章主要介紹了Java靜態(tài)代理與動(dòng)態(tài)代理案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • java使用電腦攝像頭識(shí)別二維碼

    java使用電腦攝像頭識(shí)別二維碼

    這篇文章主要為大家詳細(xì)介紹了java使用電腦攝像頭識(shí)別二維碼,從攝像頭獲取圖像,再根據(jù)圖片解析出二維碼信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • SpringBoot實(shí)現(xiàn)JWT令牌失效的6種方案

    SpringBoot實(shí)現(xiàn)JWT令牌失效的6種方案

    JWT(JSON?Web?Token)作為一種輕量級(jí)的認(rèn)證方式,被廣泛應(yīng)用于現(xiàn)代Web應(yīng)用和微服務(wù)架構(gòu)中,然而,JWT的無狀態(tài)特性雖然帶來了擴(kuò)展性優(yōu)勢,卻也帶來了令牌管理的挑戰(zhàn),特別是當(dāng)需要使令牌提前失效時(shí),本文將介紹在SpringBoot應(yīng)用中實(shí)現(xiàn)JWT令牌失效的6種方案
    2025-06-06

最新評(píng)論

铅山县| 柏乡县| 深水埗区| 林口县| 东莞市| 恩施市| 灵璧县| 慈溪市| 陵川县| 达孜县| 始兴县| 大悟县| 延吉市| 南投县| 喀喇| 旅游| 正安县| 友谊县| 马山县| 连山| 靖远县| 若羌县| 三明市| 开江县| 深州市| 成武县| 乐至县| 祁连县| 宜州市| 绥棱县| 南丰县| 万盛区| 大城县| 孝义市| 台安县| 嵊州市| 上杭县| 鱼台县| 潮安县| 韶山市| 铅山县|