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

Java中json格式化BigDecimal保留2位小數

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

場景

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

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

其實,需要在 BigDecimal 參與 json 轉化時,將其轉化成 String 類型即可。

一. Jackson的處理方式

1.編寫一個類,實現 JsonSerializer ,并實現 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.在需要特殊處理的屬性上加上這個注解 @JsonSerialize ,并將第一步創(chuàng)建好的類名加到參數中

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

看下測試結果,成功保留了對應的小數位數,并幫我們轉成了String類型,很完美

二. FastJson的處理方式

1.編寫一個類,實現 ValueFilter ,并實現 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.使用的時候需要在后面加上我們自定義的的類對象,如下

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

打印結果

總結

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

相關文章

  • JVM內存結構劃分實例解析

    JVM內存結構劃分實例解析

    這篇文章主要介紹了JVM內存結構劃分實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot注解@ConditionalOnClass底層源碼實現

    SpringBoot注解@ConditionalOnClass底層源碼實現

    這篇文章主要為大家介紹了SpringBoot注解@ConditionalOnClass底層源碼實現,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • jQuery 動畫效果代碼分享

    jQuery 動畫效果代碼分享

    本文給大家分享一段關于jquery實現的動畫效果,代碼簡單易懂,非常不錯,感興趣的朋友參考下
    2016-11-11
  • MySQL text類型對應mybatis jdbcType類型方式

    MySQL text類型對應mybatis jdbcType類型方式

    這篇文章主要介紹了MySQL text類型對應mybatis jdbcType類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java正則表達式匹配電話格式

    Java正則表達式匹配電話格式

    正則表達式是由普通的字符以及特殊字符組成的文字模式,用來在查找文字主體時待匹配的一個或多個字符串。本文給大家介紹java正則表達式匹配電話格式,對java正則表達式匹配相關知識感興趣的朋友一起學習吧
    2015-11-11
  • 詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    下面小編就為大家?guī)硪黄斦凥ashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 源碼解析springbatch的job運行機制

    源碼解析springbatch的job運行機制

    這篇文章主要介紹了springbatch的job是如何運行的,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • SpringCloud之微服務容錯的實現

    SpringCloud之微服務容錯的實現

    這篇文章主要介紹了SpringCloud之微服務容錯的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解

    這篇文章主要介紹了Java將文件夾保留目錄打包為 ZIP 壓縮包并下載的教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • spring boot 加載web容器tomcat流程源碼分析

    spring boot 加載web容器tomcat流程源碼分析

    本文章主要描述spring boot加載web容器 tomcat的部分,為了避免文章知識點過于分散,其他相關的如bean的加載,tomcat內部流程等不做深入討論,具體內容詳情跟隨小編一起看看吧
    2021-06-06

最新評論