我正在使用Jackson将POJO序列化为JSON,然后再将它们保存到数据库中。 出于安全原因,我需要对标有@Confidential注释的属性进行加密。 需要加密的字段(属性)不必是顶级字段,并且可以深度嵌套。
例如,考虑以下POJO。该人的家庭住址和年龄需要加密(它们不是“邻居”类的顶级字段)。
@Serializable
private class Neighborhood {
private String name;
private Collection<Person> people;
}
@Serializable
public class Person {
private String name;
@Confidential
private int age;
@Confidential
private Address homeAddress;
}
@Serializable
public class Address {
private String streetAddress;
private String city;
private String state;
private int zip;
}
我正在考虑编写一个用于创建字段注册表的注释处理器。该注册表将使用反射创建,并将遍历所有标有@Serializable批注的类。注册表将包含有关哪些字段需要加密以及哪些字段不需要加密的信息。
现在,在将Neighborhood POJO序列化为JSON之后,我应该能够使用JSON并在字段注册表中查找字段并进行必要的操作。但是,如果属性是集合(即列表和地图)并且通用类型信息丢失,我不知道该怎么办。
问题:
是否有比我描述的方法更好和更简单的方法? 如果是,那是什么方法?
如果没有更好的方法,我该如何处理集合(列表 和地图)。
此问题与Customize Jackson ObjectMapper to Read custom Annotation and mask fields annotated
不同这是原因: