java序列化进行参数脱敏

  |  

JsonSerializer

1
2
3
4
5
6
public class CardNumberSerialize extends JsonSerializer<String> {
@Override
public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(Objects.equals(s, "") ? s : s.replaceAll("(\\d{6})\\d{6}(\\d{4})", "$1******$2"));
}
}

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Demo {
public static void main(String[] args) {
Student student = new Student();
student.setName("张三");
student.setCardNumber("1111111111111111");
student.setAddress("beijing");
System.out.println(JsonUtil.toJSONString(student));
// ======> {"name":"张三","cardNumber":"111111******1111","address":"***"}
}

@Data
public static class Student{
private String name;

@JsonSerialize(using = CardNumberSerialize.class)
private String cardNumber;

@JsonSerialize(using = CompleteDesensitizationSerialize.class)
private String address;
}
}

代码示例

文章目录
  1. 1. JsonSerializer
  • 使用