对于手机号、证件号的等敏感字段,需要使用特定的Jackson 序列化器,实现敏感信息脱敏展示。
1.1 定义手机号序列化器
实现JsonSerializer
接口,实现手机号字段的序列化器
import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
/**
* 手机号脱敏序列化器
*/
public class PhoneDesensitizationSerializer extends JsonSerializer<String> {
@Override
public void serialize(String phone, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
// hutool工具调用,也可以自己实现
String phoneDesensitization = DesensitizedUtil.mobilePhone(phone);
jsonGenerator.writeString(phoneDesensitization);
}
}
1.2 使用自定义的序列化器
在对应字段加上@JsonSerialize
注解即可
/**
* 手机号
*/
@JsonSerialize(using = PhoneDesensitizationSerializer.class)
private String phone;