需求:
后端通过数据库查询出来的double(float8)数据
将数据保留4位小数返回给前端
使用Jackson:
package com.ruoyi.common.utils.bean;
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.text.DecimalFormat;
/**
* Jackson转换Double 保留四位小数
*/
public class DoubleSerialize extends JsonSerializer<Double> {
private DecimalFormat df = new DecimalFormat("0.####");
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
if(value != null) {
gen.writeString(df.format(value));
}
}
}
字段上使用注解进行标识
/** 图斑面积 */
@JsonSerialize(using = DoubleSerialize.class)
private Double tbmj;
需要注意:
DecimalFormat("0.####"); 这里面的规则
一开始我填写的是"##.0000", 结果导致数据"0.10"变成了".1000"
查阅相关资料后才发现"#"对于数值不存在的显示为空,他这里对0会认为不存在, 而"0"则表示数字不存在表示为0. 所以10后面会跟4个0
因此将其更改为"0.####"--表示数字不存在显示为0,后面没有4位小数的值也不会填充0