自定义注解格式化处理BigDecimal"/>
自定义注解格式化处理BigDecimal
目录
一、场景描述
二、实现步骤
1、自定义类
2、使用注解
3、测试
一、场景描述
在开发过程中,如果有实体类的属性中存在BigDecimal的属性,并且需要对其进行校验,例如:限制BigDecimal的小数点位数是两位。但目前没有注解可以完成这个操作,因此我们可以使用下面的工具类和注解进行处理。
二、实现步骤
1、自定义类
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {@Overridepublic void serialize(BigDecimal value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {if (value != null) {// 保留2位小数,四舍五入BigDecimal number = value.setScale(2, RoundingMode.HALF_UP);jsonGenerator.writeNumber(number);} else {jsonGenerator.writeNumber(value);}}
}
2、使用注解
import com.example.yht.utils.BigDecimalSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import lombok.ToString;import java.math.BigDecimal;
@Data
@ToString
public class Student {private String name;private Integer age;private String address;@JsonSerialize(using = BigDecimalSerializer.class)private BigDecimal score;
}
3、测试
@RestController
public class TestController {@PostMapping("/test")public Student test(@RequestBody Student student){return student;}
}
测试结果:
更多推荐
自定义注解格式化处理BigDecimal
发布评论