JAVA-记一次BigDecimal,String千分位转换

在显示类上面添加@JsonSerialize注解,指定对应的转换格式例如,同理可在属性为BigDecimal的字段上添加注解,指定方法:

java 复制代码
  private String userTypeStr;

  /**
   * 交易金额
   */
  @JsonSerialize(using = StringSerialize.class)
  private String transAmount;

  /**
   * 交易账户
   */
  private String transMerUserId;

对应的格式化代码类String 千分位:

java 复制代码
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * 功能说明: bide千分位展示
 */
@Slf4j
public class StringSerialize extends JsonSerializer<String> {

  @Override
  public void serialize(String str, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
    if (StrUtil.isBlank(str)) {
      jsonGenerator.writeNumber(BigDecimal.ZERO);
    } else {
      try {
        BigDecimal bigDecimal = new BigDecimal(str);
        jsonGenerator.writeString(new DecimalFormat("###,##0.00").format(bigDecimal));
      } catch (Exception e) {
        log.error("转换千分位异常: ", e);
      }
    }
  }
}

对应的BigDecimal 千分位代码:

java 复制代码
public class BigDecimalSerialize extends JsonSerializer<BigDecimal> {

  @Override
  public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
    if (null == bigDecimal || bigDecimal.compareTo(BigDecimal.ZERO) == 0) {
      jsonGenerator.writeNumber(BigDecimal.ZERO);
    } else {
      jsonGenerator.writeString(new DecimalFormat("###,##0.00").format(bigDecimal));
    }

  }
}

效果:

相关推荐
骇客野人几秒前
.gitignore文件常用设置
java
lkbhua莱克瓦243 分钟前
项目知识——Next.js App Router体系
开发语言·javascript·项目知识
bill4478 分钟前
BPMN2.0,flowable工作流,【用户任务】使用【任务监听器】动态设置下一步处理人
java·工作流引擎·flowable·bpmn
Cricyta Sevina9 分钟前
Java 语言多线程核心概念全解析
java·开发语言
缘三水15 分钟前
【C语言】15.指针(5)
c语言·开发语言·指针·语法
爱吃大芒果17 分钟前
从零开始学 Flutter:状态管理入门之 setState 与 Provider
开发语言·javascript·flutter
shenzhenNBA17 分钟前
如何在python文件中使用日志功能?简单版本
java·前端·python·日志·log
清风拂山岗 明月照大江24 分钟前
简单文件 IO 示例:使用系统调用读写文件
开发语言·c++·算法
技术净胜26 分钟前
MATLAB文本文件读写实操fopen/fscanf/fprintf/fclose全解析
开发语言·matlab