springboot返回前端的double类型需要规范精度,找了很多办法才有一个不会报错的
public class CustomerDoubleUtil extends JsonSerializer<Object> {
/**
* 将返回的BigDecimal保留两位小数,再返回给前端
* @param value
* @param jsonGenerator
* @param serializerProvider
* @throws IOException
* @throws JsonProcessingException
*/
@Override
public void serialize(Object value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
if (value != null) {
BigDecimal bigDecimal = new BigDecimal(value.toString()).setScale(2,BigDecimal.ROUND_HALF_UP);
jsonGenerator.writeString(bigDecimal.toString());
}
}
}
需要依赖的是
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
这些是springboot和java自带的,应该不会出现问题
用的时候在对应字段上方加上注解
@JsonSerialize(using = CustomerDoubleUtil.class)
可能的问题会出现在返回前端的json里面对应字段就是字符串而不是数字需要再次转换
本文用于备忘和分享