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

  }
}

效果:

相关推荐
qetfw5 分钟前
Bash 基础:脚本执行、引号与命令替换验证
linux·开发语言·chrome·bash
Thomas.Sir12 分钟前
第6课:SpringBoot4.x 核心注解全解:Component、Bean、Scope、Lazy等IOC相关注解
java·spring boot
paopaokaka_luck14 分钟前
美食推荐系统(协同过滤算法推荐、AI助手、HanLP中文分词、 ECharts可视化分析、菜谱学习与话题交流)
java·spring boot·mysql·tomcat·echarts
开源推荐官15 分钟前
2026 年开源商城源码选型参考:技术栈、功能与适用场景梳理
java·架构·开源
杜 硕24 分钟前
从零开始的C++生活——第四讲
开发语言·c++·生活
sunburn-29 分钟前
数据库操作完整教程:从基础到实战
java·数据库·mysql
云和数据.ChenGuang30 分钟前
Python 集合(set)常用函数详解与实战案例
开发语言·python·深度学习·langchain
文丑颜不良啊36 分钟前
LeetCode576~600题目解析
java·leetcode
隔窗听雨眠42 分钟前
从PHP2Shell回望:PHP内核漏洞的二十年演进与AI时代的攻防转折
开发语言·人工智能·php
lisw051 小时前
分岔论揭示演化突变密码
开发语言·算法·数学建模