json的时间格式可以用dateformat注解和jsonformat注解,但是数字的格式化是没有的,aop切变量
序列化方案
网上有一个处理方案是采用序列化
https://blog.csdn.net/u012075238/article/details/84249973
public class DoubleSerialize extends JsonSerializer<Double> {
private DecimalFormat df = new DecimalFormat("0.00");
@Override
public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
if(value != null) {
df.setMaximumFractionDigits(2);//显示几位修改几
df.setGroupingSize(0);
df.setRoundingMode(RoundingMode.FLOOR);
//根据实际情况选择使用
// gen.writeString(df.format(value)); // 返回出去是字符串
gen.writeNumber(df.format(value)); // 返回出去是数字形式 2018年12月27日17:17:21 更新
}
}
@Data
public class ValuationAmountVo {
@JsonSerialize(using = DoubleSerialize.class)
private double valuation;
@JsonSerialize(using = DoubleSerialize.class)
private double amount;
}
aop切面方案
切变量
实际上不可行,aop的前提是这个类是bean,对应new的对象,无法实现注入。
有一个办法是在service中放一个方法,然后去切这个方法,变化入参,但实际上这个使用的频率不高,就不采用。
对于数据的处理一定要聚合到类中
service中经常有各种眼花缭乱的内容赋值,或者是进行了数据的处理,当一个方法中非常多的数据处理,将会导致方法非常的长。
比如将数据赋值到新对象,将数据处理成另一个集合,处理数据精确位数,这个时候就可以放到类中处理。
比如下面
/**
* 数据类型的转换放在ResourceInfoDO
* @param in
* @return
* */
void save(ResourceInfoDO in);
入参和出参的时候时间格式
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
list转逗号分隔字符串
StringUtils.join(idList)