gpt4 book ai didi

java - Jackson——递归替换匹配的字段

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:10 25 4
gpt4 key购买 nike

鉴于以下内容(从 POJO 序列化),我需要根据字段名称对字段列表的每个出现位置进行加密,无论其深度如何。例如,我想加密文档的某些部分以进行存储(密码和订购数量)。

我已经处理了加密部分,但正在寻找一种遍历 JsonNode 的好方法,找到匹配字段的每个出现并加密/替换它。

隐藏(例如通过@JsonIgnore,不会解决问题,因为我需要存储数据)。这是为了对某些系统数据进行离线文件备份。

请注意,我想要匹配的字段(密码和数量),它们具有不同的类型,并且密码在不同级别出现多次。

{
"name":"foo",
"id":"123456",
"password":"bar",
"communities": [
{
"name":"administrators",
"location":"xyz",
"password":"baz"
},
{
"name":"members",
"location":"xyz",
"password":"baz"
}
],
"quantityOrdered": 35
}

我看到的使用树模型的示例意味着了解文档的结构。我看到 JsonNode.getElements() 可用于获取名称的所有元素,但它只返回值,而不返回键。有这方面经验的人可以推荐一个好的方法吗?

最佳答案

您可以使用自定义JsonFilter,并覆盖serializeAsField方法。

@Override
public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov, BeanPropertyWriter writer) throws Exception {
if (writer.getName().equals("name")) {
// encrypt the value
} else {
// The property will not be filtered
writer.serializeAsField(bean, jgen, prov);
}
}

关于java - Jackson——递归替换匹配的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21839819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com