当前位置: 首页 > 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.lryc.cn/news/445817.html

相关文章:

  • 通信工程高级职称评审条件详细解读
  • yolov8环境安装
  • C语言中易混淆概念的关键字
  • 网络资源模板--Android Studio 零食工坊(商城)
  • 百度高德坐标系相互转换
  • 免费下载6组简历模板,让HR一眼相中你!
  • 设计模式之模版方法模式
  • 解析!文档扫描 SDK 中的高级图像处理技术
  • 线性判别分析(LDA)中求协方差矩阵示例
  • Maven的详细解读和配置
  • 在vue2项目中使用dart-sass
  • 【机器学习】过拟合与欠拟合——如何优化模型性能
  • 二进制日志gtid模式
  • 华硕主板开启TPM 2.0
  • Linux 一键部署Mysql 8.0.37
  • Elasticsearch可视化工具ElasticHD
  • Chrome截取网页全屏
  • Why Is Prompt Tuning for Vision-Language Models Robust to Noisy Labels?
  • C++ 折叠表达式
  • 双控开关接入NVBoard
  • 聊一聊软件系统性能测试的重要性
  • 双十一有哪些好物值得入手?五款超值数码好物分享!
  • uniapp监听滚动实现顶部透明度变化
  • Humanoid 3D Charactor_P08_Federica
  • TikTok直播推流不精准该怎么办?跟IP有关系吗?
  • Docker Registry API best practice 【Docker Registry API 最佳实践】
  • 便捷点餐:Spring Boot 点餐系统
  • 研一上课计划2024/9/23有感
  • 【H2O2|全栈】关于CSS(6)CSS基础(五)
  • 网页护眼宝——全方位解析 Chrome Dark Reader 插件