fastjson转换数字时,格式化小数点

使用fastjson类库转换java对象时,对于BigDecimal类型,有时需要特殊格式,比如:

1.0,转为json时候,要求显式为1,因此需要在转换时做处理。步骤如下:

 

1、新建类,实现ValueFilter接口

复制代码
import java.math.BigDecimal;
import com.alibaba.fastjson.serializer.ValueFilter;
 
/**
 * 处理BigDecimal小数部分为0的情况
 * 123.5 -> 123.5
 * 12.0 -> 12
 * 12.00 -> 12
 */
public class BigDecimalValueFilter implements ValueFilter {
    /**
     * @param object 对象
     * @param name 对象的字段的名称
     * @param value 对象的字段的值
     */
    @Override
    public Object process(Object object, String name, Object value) {
        if(null != value && value instanceof BigDecimal) {
            String str = value.toString();
            if(str.endsWith(".0")) {
                str = str.substring(0, str.length()-2);
            } else if(str.endsWith(".00")) {
                str = str.substring(0, str.length()-3);
            } else {
                str = value.toString();
            }
            return str;
        }
        return value;
    }
}
复制代码

2、对象转为json时,第二个参数填入该类即可。

BigDecimalValueFilter filter = new BigDecimalValueFilter();
String contentJson = JSON.toJSONString(request, filter);

 

posted @   edda_huang  阅读(2022)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示