所以,我想返回一个看起来像这样的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
中对其进行软编码,以便以后如果我想添加更多的问题类型,我可以轻松地做到这一点?
答案 0 :(得分: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"}]}