Java使用Jackson转换double 保留四位小数

文章介绍了如何在Java中使用Jackson库处理后端从数据库查询出double类型数据,确保在序列化时保留四位小数,避免了0.10变成.1000的问题。通过DecimalFormat类和特定格式字符串实现精确控制。
摘要由CSDN通过智能技术生成

需求:

        后端通过数据库查询出来的double(float8)数据

        将数据保留4位小数返回给前端

使用Jackson:

package com.ruoyi.common.utils.bean;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.text.DecimalFormat;

/**
 * Jackson转换Double 保留四位小数
 */
public class DoubleSerialize extends JsonSerializer<Double> {

    private DecimalFormat df = new DecimalFormat("0.####");

    @Override
    public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
            throws IOException, JsonProcessingException {
        if(value != null) {
            gen.writeString(df.format(value));
        }
    }
}

字段上使用注解进行标识

    /** 图斑面积 */
    @JsonSerialize(using = DoubleSerialize.class)
    private Double tbmj;

需要注意:

        DecimalFormat("0.####");  这里面的规则

        一开始我填写的是"##.0000", 结果导致数据"0.10"变成了".1000"

        查阅相关资料后才发现"#"对于数值不存在的显示为空,他这里对0会认为不存在, 而"0"则表示数字不存在表示为0.  所以10后面会跟4个0

        因此将其更改为"0.####"--表示数字不存在显示为0,后面没有4位小数的值也不会填充0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值