package com.ly.base.common.model.fastjson; import java.io.IOException; import java.lang.reflect.Type; import com.alibaba.fastjson.serializer.DoubleSerializer; import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fastjson.serializer.SerializeWriter; import com.alibaba.fastjson.serializer.SerializerFeature; import com.ly.base.common.util.NumberUtil; /** * @author LeiYong */ public class DoubleCustomSerializer extends DoubleSerializer { private int digits = 2; private boolean fullZero = true; public DoubleCustomSerializer(){ } public DoubleCustomSerializer(int digits,boolean fullZero){ this.digits = digits; this.fullZero = fullZero; } public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { SerializeWriter out = serializer.getWriter(); if (object == null) { out.write('0'); return; } double doubleValue = ((Double) object).doubleValue(); if (Double.isNaN(doubleValue)||Double.isInfinite(doubleValue)) { out.write('0'); } else { String doubleText = Double.toString(doubleValue); NumberUtil.decimal(doubleText, digits, fullZero); out.append(doubleText); if (serializer.isEnabled(SerializerFeature.WriteClassName)) { out.write('D'); } } } }