登录 后使用快捷导航
没有帐号?立即注册

IT撸码课程网

用户名   找回密码
  立即注册
发新帖

Springboot对BigDecimal类型保留两位小数返回处理

[复制链接]
100 245 100
发表于2018-11-23 16:11:07 | 只看楼主 | 阅读模式
上一主题
登录后查看本帖详细内容!您需要登录后才可以下载 登录 | 立即注册


经常遇到返回的数据要统一保留小数位一致的问题,我们可以自定义注解来解决这个问题

废话不多说,直接上代码

1、定义序列化Json处理类继承JsonSerializer,泛型类型为要做处理的对象类型

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;
import java.text.DecimalFormat;

/**
 * 返回对象保留2位小数处理
 */
public class CustomerBigDecimalSerialize extends JsonSerializer<BigDecimal> {

    private DecimalFormat df = new DecimalFormat("0.00");
    @Override
    public void serialize(BigDecimal arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException {
        if(arg0 != null) {
            arg1.writeString(df.format(arg0));
        }
    }

}


2、在要处理对象属性上面指定序列化处理类格式化

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xhg.boss.newreport.statis.constant.CustomerBigDecimalSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

@ApiModel(value = "回收数据报表")
@Data
public class RecoveryDTO {

    @ApiModelProperty(value = "日期")
    private String statDt;

    @ApiModelProperty(value = "回收订单数")
    private long recyOrdQty;

    @ApiModelProperty(value = "回收总重量(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal recyWei;

    @ApiModelProperty(value = "回收总金额(元)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal recyOrdAmt;

    @ApiModelProperty(value = "饮料瓶(个)")
    private long botRecyQty;

    @ApiModelProperty(value = "纺织物(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal texRecyWei;

    @ApiModelProperty(value = "纸类(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal papRecyWei;

    @ApiModelProperty(value = "金属(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal metRecyWei;

    @ApiModelProperty(value = "塑料(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal plaRecyWei;

    @ApiModelProperty(value = "玻璃(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal glaRecyWei;

    @ApiModelProperty(value = "有害垃圾(公斤)")
    @JsonSerialize(using = CustomerBigDecimalSerialize.class)
    private BigDecimal toxRecyWei;

}


2、查看返回结果

image.png

IT撸码网 - 必读申明1、本站会员可发帖,本主题所有言论和图片纯属会员个人意见,与本论坛立场无关.
2、本站所有帖子由该帖子作者发表,该帖子作者享有帖子相关权益.
3、本帖内容来网友及会员分享和其它网络媒体.
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
5、若因内容问题IT撸码网管理员和版主有权不事先通知发贴者而删除本文.
6、本站课程仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
7、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会积极为您解决问题!
8、若发现链接失效了点此进行链接失效反馈,我们会第一时间修复链接.

精彩评论0

您需要登录后才可以发帖查看详细内容! 登录 | 立即注册
*
 

本版积分规则