jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题

简介: jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题

一、 问题

最近开发中使用BigDecimal这个数据类型 返回json数据时出现了点问题:

# 1.前端第一次保存的时候 穿过来的数据格式 
240.00
240.77
# 2. mysql数据库存储的数据格式(数据库字段已经设置了保留小数点后两位)
240
240.77
# 3. java程序中查看从数据库中查询的回来的数据格式:
240.00
240.77
# 4. 返回前端的json字符串里的数据格式:
240
240.77
# 4. 前端想要的json字符串里的数据格式:
240.00
240.77


由上面的一系列分析可知:要想解决这个根源在于返回json数据的时候需要将数据格式化。


二、解决方案:使用@JsonSerialize输出数据保留两位小数

步骤1.创建一个BigDecimal格式化工具

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;
public class BigDecimalSerialize extends JsonSerializer<BigDecimal> {
    @Override
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
        if (value != null && !"".equals(value)) {
            gen.writeString(value.setScale(2, BigDecimal.ROUND_HALF_DOWN) + "");
        } else {
            gen.writeString(value + "");
        }
    }
}

步骤二:在返回的实体类对应的属性上加上注解:

@JsonSerialize(using = BigDecimalSerialize.class)
  private BigDecimal totalCost;

总结

这个方案可以统一解决json的Date日期类型,String类型。double类型。。。等等的序列化格式问题


@JsonSerialize正确使用 https://juejin.im/post/5c91ad28e51d4574ed4ee0a3


目录
相关文章
|
8月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
79 0
|
8月前
|
存储 Java 程序员
Java 日期时间
4月更文挑战第17天
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
59 26
|
5月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
3月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
192 0
在Java中处理JSON数据:Jackson与Gson库比较
|
4月前
|
JSON Java fastjson
java小工具util系列3:JSON和实体类转换工具
java小工具util系列3:JSON和实体类转换工具
43 2
|
7月前
|
JSON Java 数据格式
java里json常见的转换方法
java里json常见的转换方法
179 0
|
8月前
|
存储 Java
Java中BigDecimal怎样取反
在上述示例中,`number.negate()`会将BigDecimal对象 `number`的值取反,并将结果存储在新的BigDecimal对象 `negated`中。
152 0
|
8月前
|
Java
java中,根据指定日期显示出前n天的日期
java中,根据指定日期显示出前n天的日期
|
JSON 数据格式
java202303java学习笔记第四十六天-请求-日期参数&json参数1
java202303java学习笔记第四十六天-请求-日期参数&json参数1
216 0