在将DTO字段/秘密转换为json字符串(用于日志(log)记录)时,我需要一种方便的方法来对其进行审查.
我正在使用对象映射器,我听说过大约@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
,但它完全隐藏了注释字段,这可能会令人困惑,因为如果我想跟踪日志(log)中的错误,我可能会认为它只是空,因此,如果属性的值简单地替换为类似***
的东西,那就更好了.
定义字段名称列表来替换值也不合适,因为我可能会删除我不想删除的字段.此外,重构也会使事情变得复杂.
我的 idea 是使用自定义注释来注释字段,并使用对象映射器实现一些json后处理,但我找不到一种方法来做到这一点. 例如:
public record Person(String name, @Censored String secret) {
}
// and later
log.info(objectMapper.writeValueAsString(person));
输出应
{"name":"John","secret":"***"}
有没有方法将ObjectMapper
配置为使用我的自定义@Censored
注释注释的字段?
我还愿意接受实施日志(log)审查逻辑的其他建议.
我try 使用@JsonProperty(Access = JsonProperty.Access.WRITE_ONLY),但它没有达到我想要的结果.