使用@JsonSerialize注解给页面列表诸如身份证之类的敏感数据实现脱敏
例如苹果手机表的郭富城机主信息:
实现:
1.首先可以先定义一个Vo专门用于接收数据列表在脱敏页面展示,不建议直接在实体类字段上处理,因为可能别的业务可能还需要使用实体类
//苹果手机客户类
public class ApplePhoneVo {
业务字段......
/** 证件号码 */
@JsonSerialize(using = IdCard.class)
private String idcard;
/** 联系电话 */
@JsonSerialize(using = Phone.class)
private String phone;
}
2.在需要做脱敏的字段加上这个字段,指定using=一个类名
/** 证件号码 */
@JsonSerialize(using = IdCard.class)
private String idcard;
3.然后创建这个类,在里面定义脱敏规则即可
(我这里是把身份证号码11到14位替换为*号再给前端做展示)
package com.xxx.xxx.utils.Serialize;
import java.io.IOException;
/**
* @Description: (身份证脱敏)
* @Author: lueluelue
* @CreateTime: 2025-02-17 10:30
*/
public class IdCard extends JsonSerializer<String> {
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (StringUtils.isNotBlank(value)){
gen.writeString(value+"*");
}
}
}
4.效果