Как программно кодировать карту в файле SpringBoot application.properties вместо жесткого кодирования? - PullRequest
0 голосов
/ 31 мая 2019

Итак, я хочу вернуть объект JSON, который должен выглядеть следующим образом:

{"Issues":[{"IssueName": "Loan"},{"IssueName": "Lease"},{"IssueName": "Other"}]}

Пока что я ближе всего к этому формату через этот код:

@RequestMapping(value="/issueTypes", produces = MediaType.APPLICATION_JSON_VALUE)
    public  Map<String, String> getIssue(){
        HashMap<String, String> issue = new HashMap<>();
        issue.put("issues", "Loan");
        issue.put("issues", "Lease");
        issue.put("issues", "Other");
        return issue;
    }

Хотяmap дает мне пары ключ-значение в фигурных скобках, не позволяет мне устанавливать один и тот же ключ на разные значения (по очевидным причинам).Есть ли другой способ вернуть вышеупомянутый объект JSON?И можно ли его мягко кодировать в application.properties, чтобы, если позже я захочу добавить больше типов проблем, я мог легко это сделать?

1 Ответ

1 голос
/ 31 мая 2019

Один из способов заключается в использовании List записей вместо Map записей:

@Value("#{'${issues}'.split(',')}")
private List<String> issues;

@RequestMapping(value = "/issueTypes", produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<Map.Entry<String, String>>> getIssue() {
    Map<String, List<Map.Entry<String, String>>> m = new LinkedHashMap<>();
    m.put("Issues", issues.stream()
            .map(s -> Map.entry("issueName", s))
            .collect(Collectors.toList()));
    return m;
}

и в вашем приложении.1009 *

{"Issues":[{"issueName":"Loan"},{"issueName":"Lease"},{"issueName":"Other"}]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...