示例背景描述:对申请记录的分页查询结果中的身份证号进行脱敏,4-14位用****展示;
方法:使用@JsonSerialize注解;
具体步骤:
1.创建用于数据格式转换的类
public class CertNumJsonSerializer extends JsonSerializer<String> {
@Override
public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
int start = 6;
int end = 14;
if (StringUtils.isEmpty(s) || s.length() < end) {
return;
}
String oldStr = s.substring(start, end);
if (s.length() > end) {
jsonGenerator.writeString(s.replaceFirst(oldStr, "****"));
}
}
}
2.在VO的字段中使用该注解
@Data
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "ApplyRecordVO", description = "申请表")
public class ApplyRecordVO {
@ApiModelProperty("证件号")
@JsonSerialize(using = CertNumJsonSerializer.class)
private String certNumber;
}