我需要屏蔽以下 JSON 数据: 给定 JSON:
{
"key1":"value1",
"key2":"value2",
"key3": {
"key4":"value3"
}
}
Maksed data :
{
"key1":"value1",
"key2":"value2",
"key3": {
"key4":"000000"
}
}
我们已经有一个问题 Java 中的 JSON PII 数据屏蔽 如果密钥是主要响应的一部分(例如 key1 、 key2 或 key3 ),则 whoes 答案有效,但我需要一些嵌套值。 (使用杰克逊)
如果我们有需要屏蔽的 json 属性名称,但它的位置在 JSON 中可能会有所不同,具体取决于收到的响应,该怎么办?如何掩盖这些值? 示例:我只知道我需要屏蔽“key4”值。
你已经有了答案。 Jackson 将为每个嵌套属性创建一个
Map
。您可以使用上一个问题的答案,只需更改地图的流程
// Process map
if (map.containsKey("key3")) {
Map<String, Object> nestedMap = (Map<String, Object>)map.get("key3");
if (nestedMap.containsKey("key4")) {
nestedMap.put("key4","000000");
}
}
最近,我们发布了Java 中的高性能 JSON 掩码库的第一个候选版本,没有运行时依赖项,您可能想用它来执行此操作。
它适用于任何 JSON 值类型(JSON 对象和数组中的任何嵌套),具有广泛且可配置的 API,并且在 CPU 时间和内存分配方面增加了最小的计算开销。此外,它对 JsonPath 支持有限。