如何在不知道确切键的情况下屏蔽特定值,在 JSON 字符串中,在 Java 中

How to mask a specific value without knowing exact key, within a JSON string, in Java

我收到一个字符串形式的 JSON,需要屏蔽一条信息,但是 JSON 结构和键名总是不同的,但值的模式是可识别的。问题是,什么是遍历 String/JSONObject 以屏蔽该数据的有效方法。

我尝试将字符串转换为 JSON 对象并遍历每个嵌入的 JSONObject/Array,检测模式,并用其掩码版本替换原始值。但是将此信息记录到控制台时,这似乎非常耗时。

供参考的值的格式是一个 9 位(长)数。 结构总是从“{"key1":[{"innerKey1":123456789}]}”到“{"key1":"value1","key2":{"innerKey1":123456789}"

示例结果:“{"key1":[{"innerKey1":"XXXXXX789"}]}”

如果 JSON 结构始终作为优化的单行字符串提供,您可以在字符串中找到值并替换它,或者更详细地使用正则表达式来查找 innerKey1:12345 匹配并替换它。

如果这只是为了记录目的,您甚至可以将其实现为过滤器,具体取决于您的记录框架,它甚至可能是可配置的,而不必编写代码。