首页 > 解决方案 > 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());

但这不是预期的结果

标签: javajava-stream

解决方案


将 groupingBy 与下游收集器一起使用:


Map<String, List<String>> result = 
    roleLevels.stream()
              .collect(Collectors.groupingBy(RoleManager::getName, 
                                             Collectors.mapping(RoleManager::getRole,
                                                                Collectors.toList())));

推荐阅读