开发过程中,经常有这种需求
double数据要统一两位小数
状态值要转化成对应的文字
等等……
如果按一般的方法来,那么每个数据都要if……else来写,或者在业务代码里显式写死格式转化,这样一点都不优雅,还会增加代码量,那么怎样才能优雅一点呢?
答案是有的,只需要两步即可
1、继承JsonSerializer 类,实现serialize方法,在方法里面做自己的格式化操作
这是double格式化的举例
public class DoubleFormatSerialize extends JsonSerializer<Double> {
private DecimalFormat df = new DecimalFormat("0.00");
@Override
public void serialize(Double aDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (aDouble != null) {
jsonGenerator.writeString(df.format(aDouble));
}
}
}
这是状态值对照的举例
public class DoubleFormatSerialize extends JsonSerializer<Integer> {
private DecimalFormat df = new DecimalFormat("0.00");
@Override
public void serialize(Integer aInteger, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
String status;
if (Integer == 1) {
status = "成功";
}else if (Integer == 0) {
status = "失败";
}
jsonGenerator.writeString(status);
}
}
2、在实体类上对应的字段加上
@ApiModelProperty(value = "采集质量")
@JsonSerialize(using = DoubleFormatSerialize.class)
private String status;
DoubleFormatSerialize就是第一步写的那个序列化类