手机号在实际开发中通常要求安全返回,例如183****5996,那在Web开发中实现起来非常简单
SpringBoot自带Jackson手机号脱敏
由于SpringBoot默认整合了JSON序列化器Jackson,我们只需自定义一个序列化器并继承JsonSerializer即可
public class PhoneJsonSerializer extends JsonSerializer {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value != null && value instanceof String){
if (!Objects.equals(value,"") && value.toString().length() > 5){
String phone = value.toString();
phone = phone.substring(0, 3) + "******" + phone.substring(phone.length() - 2);
gen.writeString(phone);
} else {
gen.writeObject(value);
}
} else {
gen.writeObject(value);
}
}
}
Jackson注解
Jackson自带很多个注解,由于针对手机号进行脱敏处理,所以针对指定的手机号字段,加上其中的@JsonSerialize
注解,通过反射找到指定的序列化器
/**
* @Description 用户测试类
* @Author Fangchenjiang
* @Date 2021/5/7 16:07
*/
@Data
public class User {
@ApiModelProperty("年龄")
private Integer age;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("手机号")
@JsonSerialize(using = PhoneJsonSerializer.class)
private String phone;
}
这样,我们就实现了手机号的****号返回,同理,对于姓名,身份证号也能通过这样的方式处理。