Как отредактировать / замаскировать ответ JSON с помощью регулярного выражения?
Допустим , вы хотите замаскировать пароль в ответе JSON.
{
"username":"test",
"password":1234
}
Как мы можем добиться этого, используя регулярные выражения.
вывод должен быть таким
{
"username":"********",
"password": ********
}
1 ответ
Потратив на это пару часов, нашел это решение.
private static final String REGEX_FILTER_KEY = "[:]+((?=\\[)\\[[^]]*\\]|(?=\\{)\\{[^\\}]*\\}|\\\"[^\"]*\\\"|(\\d+(\\.\\d+)?))";
List<String> redactKeys = Collections.unmodifiableList(Arrays.asList("username", "password", "userId"));
private String redact(@NonNull String responseString) {
for (String key : redactingKeys) {
Matcher matcher = Pattern.compile(String.format("\"%s\"%s", key, REGEX_FILTER_KEY)).matcher(responseString);
if (matcher.find() && matcher.group(1) != null) {
responseString = responseString.replace(matcher.group(1), "**********");
}
}
return responseString;
}