Как отредактировать / замаскировать ответ 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;
    }
Другие вопросы по тегам