chenzhao

  • java
  • iOS
  • IT
知识积累
不积跬步无以至千里
  1. 首页
  2. java
  3. 正文

java BigDecimal 太长前端无法接受的问题处理

2022年 11月 10日 168点热度 0人点赞 0条评论

java 长数字前端无法接受的问题
多数都是已 @JsonSerialize(using = ToStringSerializer.class) 解决, long 类型,
但是发现 BigDecimal 用此方法无效,对ToStringSerializer 进行重写,转string 方法

import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase;


import java.math.BigDecimal;

/**

 * 自定义  BigDecimal 类型, 传递数据给前端转string

 */

public class BigDecimalToStringSerializer extends ToStringSerializerBase {



    /**

     * Singleton instance to use.

     */

    public final static ToStringSerializer instance = new ToStringSerializer();



    /**

     *<p>

     * Note: usually you should NOT create new instances, but instead use

     * {@link #instance} which is stateless and fully thread-safe. However,

     * there are cases where constructor is needed; for example,

     * when using explicit serializer annotations like

     * {@link com.fasterxml.jackson.databind.annotation.JsonSerialize#using}.

     */

    public BigDecimalToStringSerializer() { super(Object.class); }



    /**

     * Sometimes it may actually make sense to retain actual handled type.

     *

     * @since 2.5

     */

    public BigDecimalToStringSerializer(Class<?> handledType) {

        super(handledType);

    }

    @Override

    public final String valueToString(Object value) {



        if (value instanceof BigDecimal){

            return  ((BigDecimal) value).stripTrailingZeros().toPlainString();

        }else{

            return value.toString();

        }



    }

}
标签: 暂无
最后更新:2022年 11月 10日

陈昭

IT 程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2022 chenzhao. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang