java - 如何在 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;
}
虽然 map 在花括号中为我提供了键值对,但它不允许我将相同的键设置为不同的值(原因很明显)。有没有其他方法可以返回上述 JSON 对象?是否可以对其进行软编码,application.properties
以便以后我想添加更多问题类型时可以轻松完成?
解决方案
一种方法是使用 a List
of Entries 而不是Map
Entries:
@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"}]}
推荐阅读
- javascript - 在 HTML 中渲染箭头
- embedded - malloc 如何知道嵌入式系统中第一个可用块在哪里?
- jdbc - 使用 JDBC 建立连接
- arrays - 将一个数组中的重复对象推送到它们自己的数组中
- python-3.x - 获取空内容 Beautiful Soup Python
- netezza - 检查 IBM Netezza 中哪些程序修改了数据
- python - 我的代码出现下一个错误,我需要将 dato 传递给 csv:数组 dtype 之间不匹配('
下一个代码是真实的一部分,但在这部分中,我在屏幕上显示了 2 个不同的向量,你需要在 CSV 文件中传递它,但显示了下一个错误:data = asarray(["{0} \n{1}\n".format(sentence, np.array(bag_vector
- rest - 如何使用服务密钥创建 Google Api RESTful 端点?
- python - 如何使用 Python 在新列的每一行中进行分组并列出结果?
- java - 如何在Java中读取输入文本文件而不必每次都更改文件名