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

  }
}

效果:

相关推荐
今天又在写代码29 分钟前
java-v2
java·开发语言
competes1 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
Ulyanov2 小时前
用Pyglet打造AI数字猎人:从零开始的Python游戏开发与强化学习实践
开发语言·人工智能·python
2501_913061342 小时前
网络原理知识
java·网络
独自归家的兔2 小时前
OCPP 1.6 协议详解:StatusNotification 状态通知指令
开发语言·数据库·spring boot·物联网
希望永不加班2 小时前
Spring AOP 代理模式:CGLIB 与 JDK 动态代理区别
java·开发语言·后端·spring·代理模式
RNEA ESIO2 小时前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
23471021272 小时前
4.15 学习笔记
开发语言·软件测试·python
flushmeteor3 小时前
java的动态代理和字节码生成技术
java·动态代理·代理·字节码生成
eggwyw3 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring