fastjson 浮点型数据序列化后变成科学记数格式

偶然遇到了fastjson在序列化浮点型数据为String类型的时候,出现了科学记数法的格式。
由此开始解决问题。
官方给出的解决办法如下:

方法一:

https://github.com/alibaba/fastjson/wiki/ObjectSerializer_cn
自定义一个序列化对象,替换掉官方默认指定类型的序列化对象。默认的对象类型在SerializeConfig中的initSerializers()方法中初始化;

方法二:

https://github.com/alibaba/fastjson/issues/656
不要使用浮点型的数据,换成Decimal类型;

方法三:

实现ValueFilter接口,这个接口只对key-value格式的数据产生效果。因为只有key-value格式的数据才会被fastjson的MapSerializer序列化对象调用。也就是说只有MapSerializer才会去调用ValueFilter的实现.

public class DoubleToStringFilter implements ValueFilter {

    @Override
    public Object process(Object object, String name, Object value) {
        if(null != value && value instanceof Double) {
            BigDecimal b = BigDecimal.valueOf((Double) value);
            return  b.longValue();
        }
        return value;
    }
}

你可能感兴趣的:(fastjson 浮点型数据序列化后变成科学记数格式)