Я хочу преобразовать чувствительные строки в Джексоне во что-то вроде "<removed>"
. В идеале, что-то вроде:
interface Scrubber {
String scrubString(String str);
boolean shouldScrubValue(String key);
// String keys are never themselves scrubbed
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD})
public @interface Serializable {
public boolean value() default true;
}
class ClassToBeSerialized {
String nonScrubbedString;
@Scrub
String scrubbedString;
// deep values are scrubbed too unless marked otherwise
@Scrub
Map<String, Object> map;
@Scrub
IncludedClass obj;
}
class IncludedClass {
@Scrub(false)
String nonScrubbedString;
Map<String, Object> map; // is scrubbed if included from ClassToBeSerialized
}
Экземпляр Scrubber
, я могу включить его в качестве атрибута Джексона, но как лучше поступить с остальными?