You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理JsonArray编解码时小数尾部零被自动移除如何解决

JSON序列化保留小数尾部零的解决方案

核心原因:JSON规范中数字类型本身不存储格式信息,默认序列化逻辑会自动移除无意义的尾部零,要保留格式可以用以下几种方案:

  • 方案1:字段改为String类型存储(最稳妥,适合仅需展示无需计算的场景)
    解析JSON时直接读取原始数值字符串存入TestClass对应字段,不要转成Double/BigDecimal等数值类型,序列化时会直接输出原始字符串,不会修改格式。
    代码示例:
    // TestClass定义示例
    public class TestClass {
        // 原数值字段改为String类型
        private String price;
        // getter、setter省略
    }
    
    // 解析逻辑修改
    jsonArray.forEach(o -> {
        JsonObject jsonObject = new JsonObject(o.toString());
        TestClass item = new TestClass();
        // 直接取字符串不要转数值
        item.setPrice(jsonObject.getString("price"));
        list.add(item);
    });
    
  • 方案2:自定义序列化规则(适合需要用数值类型做计算的场景)
    你代码里的Json.encode、JsonArray属于Vert.x内置JSON工具,底层基于Jackson实现,可以给对应字段加自定义序列化注解,强制按指定小数位数输出:
    第一步:自定义序列化器
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    import java.io.IOException;
    import java.math.BigDecimal;
    import java.text.DecimalFormat;
    
    public class DecimalKeepSerializer extends JsonSerializer<BigDecimal> {
        // 按需调整保留位数,要保留2位就写0.00,要保留3位就写0.000
        private static final DecimalFormat format = new DecimalFormat("0.00");
        
        @Override
        public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {
            if (value != null) {
                gen.writeNumber(format.format(value));
            }
        }
    }
    
    第二步:给TestClass对应字段添加序列化注解
    public class TestClass {
        @JsonSerialize(using = DecimalKeepSerializer.class)
        private BigDecimal price;
        // getter、setter省略
    }
    
    如果你用的是其他JSON库(比如Gson),也可以通过对应库的自定义TypeAdapter实现相同逻辑。
  • 注意事项:如果处理的是金额类敏感数据,不要用Double/Float类型存储,避免精度丢失,优先用BigDecimal或者字符串存储。

内容的提问来源于stack exchange,提问作者supriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:39:01