java - Java 使用流映射返回所需的 JSON 结构
问题描述
我是 Java 新手,我有一个如下所示的数组
[{'roleName': "driver", "name": "Hub"},{'roleName': "hoc", "name": "Org"},{'roleName': "hubManager", "name": "Hub"}]
我必须将其格式化为以下结构
{
Org :{
role : ["hoc"]
}
Hub: {
role :
["driver","hubManager"]
}
}
请帮助我如何使用 Java 流来做到这一点
我已经尝试过以下
List<String> roles = roleLevels
.stream()
.map(c -> c.getRoleName()).collect(Collectors.toList());
但这不是预期的结果
解决方案
将 groupingBy 与下游收集器一起使用:
Map<String, List<String>> result =
roleLevels.stream()
.collect(Collectors.groupingBy(RoleManager::getName,
Collectors.mapping(RoleManager::getRole,
Collectors.toList())));