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();
}
}
}
文章评论