Как отобразить программный код в файле SpringBoot application.properties вместо жесткого кодирования?

Итак, я хочу вернуть объект 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;
    }

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

Ваш пример не является допустимым json.

Jens 31.05.2019 09:15

@Jens, теперь это действительный json?

jukebox 31.05.2019 09:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из способов — использовать 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;
}

и в вашем application.properties:

issues=Loan,Lease,Other

Выход:

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

Другие вопросы по теме

Похожие вопросы

Как продолжить последовательность/параллельные действия из cachedActions Libgdx
Как сделать супер/базовый/родительский класс в микросервисах в весенней загрузке - расширить этот класс в дочернем классе
Как правильно реализовать equals(), hashCode() для дерева в Java?
Умножение журнала на число с плавающей запятой в некоторых случаях дает неверный результат
Tomcat7 SESSIONID продолжает меняться после применения redis RedisSessionManager
Сброс подключения — Java (состояние базового сокета остается установленным) Azure VM
Могу ли я развернуть приложение .car (synapse-mediator & REST API) на wso2dss?
Как преобразовать List<String> в Map<String,List<String>> на основе разделителя
Как сохранить в списке элементы первого списка, которые не содержатся во втором списке с повторяющимися значениями?
Автоматизация тестирования мобильных приложений Android/IOS: нужна рекомендация по использованию фреймворка?