关于fastjson序列化BigDecimal

发布于 2021-12-03 08:39:36 字数 1318 浏览 1056 评论 2

@wenshao 你好,想跟你请教个问题:项目中有用到BigDecimal,然后我想按照自己的方式序列化BigDecimal,不保留小数,但是出现了问题。代码是这样子的

这是自己定义的序列化BigDecimal类

public class BigDecimalFormatSerializer implements ObjectSerializer {
	private final DecimalFormat decimalFormat;

	public BigDecimalFormatSerializer(DecimalFormat decimalFormat) {
		this.decimalFormat = decimalFormat;
	}

	@Override
	public void write(JSONSerializer jsonSerializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
        SerializeWriter out = jsonSerializer.getWriter();
        if(object == null){
            out.write("0");
        }else{
            BigDecimal bigDecimal = (BigDecimal)object;
            String value = decimalFormat.format(bigDecimal);
            out.write(value);
        }
    }
}



在另一个处理类中有设置BigDecimal处理类

//设置序列化时间 Bigdecimal忽略小数
    private static SerializeConfig config = new SerializeConfig();
    private static String dateFormat;
    private static DecimalFormat decimalFormat;

    static {
        dateFormat = "yyyy-MM-dd'T'HH
              

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2021-12-04 10:04:46

的确可以,但是如果每一个VO对象的BigDecimal属性都这样备注的话,有点难于管理,最好的方式就是在出入口统一格式化管理。谢谢

孤檠 2021-12-04 07:11:32

使用@JSONField(format="#0") 在a属性上进行注解,就能完成你的需求

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文