当前位置: 首页 > article >正文

【记录】在返回值类型为BigDecimal情况下末尾小数位为0的会省略不显示

【问题】:在返回值类型为BigDecimal情况下末尾小数位为0的会省略不显示

问题复现:

实体类

package com.zlp.aspect.entity;

import java.math.BigDecimal;

/**
 * @program: my_utils
 * @description:
 * @author: zlp
 * @create: 2024-09-24 10:01
 **/

public class User {
    private String name;

    private BigDecimal high;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getHigh() {
        return high;
    }

    public void setHigh(BigDecimal high) {
        this.high = high;
    }

}

模拟需求返回:

package com.zlp.aspect.controller;

import com.zlp.aspect.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @program: my_utils
 * @description:
 * @author: zlp
 * @create: 2024-09-24 09:53
 **/
@RestController
@RequestMapping("/bigdecimal")
public class BigDecimalTest {

    @RequestMapping("/test")
    public List<User> test() {
        List<User> users = new ArrayList<>();
        User user = new User();
        user.setName("码场小兵");
        user.setHigh(new BigDecimal("1.77"));
        users.add(user);

        User user1 = new User();
        user1.setName("码场老兵");
        user1.setHigh(new BigDecimal("1.80"));
        users.add(user1);

        return users;
    }
}

测试结果:

可以看到,我们定义的1.80后面的那个0没有显示出来。

问题解决:

1、自定义类继承JsonSerializer,重写serialize方法,以字符串形式序列化。

package com.zlp.aspect.config;

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;

/**
*
* @desc 序列化时按字符串格式,保留为0的小数位
* @author
* @data
**/
public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {
    @Override
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeString(value.toString());
    }
}

2、在实体类添加注解 @JsonSerialize(using = BigDecimalSerializer.class)

测试结果:

ps:在实际开发中与前端交互的vo还是建议都定义String类型,使用起来灵活、方便。


http://www.kler.cn/news/319354.html

相关文章:

  • linux如何启用ipv6随机地址
  • QT 中的信号与槽机制详解
  • 2:java的介绍与基础2:Scanner
  • 【BurpSuite】Cross-site scripting (XSS 学徒部分:1-9)
  • JVM面试问题集
  • 航班延误背后隐秘原因--网络安全
  • 41. 如何在MyBatis-Plus中实现批量操作?批量插入和更新的最佳实践是什么?
  • MELON的难题- 华为OD统一考试(E卷)
  • 【Unity服务】如何使用Unity Version Control
  • transformer模型写诗词
  • 【大模型教程】如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!
  • day-60 字符串中最多数目的子序列
  • 整合SpringSecurity框架经典报错
  • 大数据实验一: Linux系统安装和使用
  • 看Threejs好玩示例,学习创新与技术(GridDistortionEffect)
  • [Redis][List]详细讲解
  • 秋分之际,又搭建了一款微信记账本小程序
  • 大模型智能体在金融公告理解领域的应用 | OPENAIGC开发者大赛高校组AI创新之星奖
  • 宠物空气净化器和普通的空气净化器有区别吗?哪款能吸猫毛
  • Excel的基本应用__1
  • 牛客周赛 Round 60
  • 数据结构——二叉搜索树、Map和Set
  • 【Unity基础】Unity常见数据管理方案总结
  • 虚拟机屏幕分辨率自适应VMWare窗口大小
  • 继承
  • 【计算机网络 - 基础问题】每日 3 题(二十一)
  • 如何全局修改Git的邮箱、用户名?
  • Redis面试笔记
  • 教授【优青】团队亲自指导!提供专业实验设计、数据分析、SCI论文辅助等全方位服务
  • c++中修改const变量的方法和const类成员函数修改类成员变量的方法