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

【记录】在返回值类型为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> {@Overridepublic void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {gen.writeString(value.toString());}
}

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

测试结果:

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


http://www.mrgr.cn/news/35796.html

相关文章:

  • 邦芒干货:职场上快速适应工作新环境的十大举措
  • 表单多个输入框校验
  • 外网SpringBoot项目迁移到内网无法加载maven依赖
  • 逆概率加权(R和Python案例)
  • implementation ‘com.lxj:xpopup:2.2.1‘失败
  • 【Linux】驱动的基本架构和编译
  • TON生态系统开发指南:从零开始构建你的Web3应用
  • 手撕Transformer之Embedding Layer
  • 基于pdf.js实现对pdf预览、批注功能、 保存下载pdf,适配H5,平板 踩坑记录
  • 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上)
  • ntpdate同步配置文件调整详解
  • 聊一聊软件系统性能测试的重要性
  • dspic33F Mplab IDE V8.92内存使用情况
  • SD1.5的遗产
  • 数据结构:Heap堆应用(堆排序,TOP-K问题)手把手带你入门数据结构~
  • 电脑如何录屏?无水印、高清晰度电脑录屏教程
  • 国产长芯微LPA8304对数放大器完全P2P替代AD8304
  • AI产品经理面试题整理【已拿offer】
  • 如何构建智能应用:深入探索Langchain的强大功能与应用潜力
  • 电脑桌面归纳小窗口如何设置?电脑桌面一键整理工具分享!