在Java中,可以使用JsonNode类来操作JSON字符串并屏蔽特定值,即将特定值替换为null或其他默认值。下面是一个示例代码:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonUtils {
public static String maskJsonValue(String jsonString, String keyToMask) {
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
maskJsonNodeValue(jsonNode, keyToMask);
return jsonNode.toString();
} catch (Exception e) {
e.printStackTrace();
return jsonString;
}
}
private static void maskJsonNodeValue(JsonNode jsonNode, String keyToMask) {
if (jsonNode.isObject()) {
jsonNode.fields().forEachRemaining(entry -> {
if (entry.getKey().equals(keyToMask)) {
((ObjectNode) jsonNode).put(entry.getKey(), (String) null);
} else {
maskJsonNodeValue(entry.getValue(), keyToMask);
}
});
} else if (jsonNode.isArray()) {
jsonNode.forEach(node -> maskJsonNodeValue(node, keyToMask));
}
}
}
使用该工具类,可以将JSON字符串中指定键的值屏蔽为null。下面是一个示例用法:
public class Main {
public static void main(String[] args) {
String jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
String keyToMask = "age";
String maskedJsonString = JsonUtils.maskJsonValue(jsonString, keyToMask);
System.out.println(maskedJsonString);
}
}
输出结果为:{"name":"John","age":null,"city":"New York"}
这样就实现了在不知道确切键的情况下屏蔽JSON字符串中特定值的功能。
领取专属 10元无门槛券
手把手带您无忧上云