You need to enable JavaScript to run this app. 如何使用Java Streams将对象数组转换为指定格式的JSON结构
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Streams将对象数组转换为指定格式的JSON结构

Java Streams实现对象数组转指定JSON结构方案

你的原有写法仅提取了所有roleName为一维列表,没有按name字段分组聚合,也没有生成嵌套结构,所以不符合需求。以下是可直接运行的实现方案:

首先约定你的对象对应实体类结构如下:

class RoleLevel {
    private String roleName;
    private String name;
    // 构造方法、setter略
    public String getRoleName() { return roleName; }
    public String getName() { return name; }
}

方案1:分两步处理(可读性更高)

第一步:按name字段分组,收集同组的roleName为列表

import java.util.stream.Collectors;

// 按name分组聚合role
Map<String, List<String>> nameToRolesMap = roleLevels.stream()
        // 可选:过滤空值避免空指针
        .filter(rl -> rl.getName() != null && rl.getRoleName() != null)
        .collect(Collectors.groupingBy(
                RoleLevel::getName,
                Collectors.mapping(RoleLevel::getRoleName, Collectors.toList())
        ));

第二步:封装为目标嵌套结构,再序列化为JSON

import com.fasterxml.jackson.databind.ObjectMapper;

// 构造目标嵌套结构
Map<String, Map<String, List<String>>> resultMap = nameToRolesMap.entrySet().stream()
        .collect(Collectors.toMap(
                Map.Entry::getKey,
                entry -> Collections.singletonMap("role", entry.getValue())
        ));

// 序列化为格式化JSON字符串(需要引入jackson-databind依赖)
ObjectMapper objectMapper = new ObjectMapper();
String jsonResult = objectMapper.writerWithDefaultPrettyPrinter()
        .writeValueAsString(resultMap);

方案2:一步流式处理(写法更简洁)

直接在分组时通过collectingAndThen完成嵌套结构封装:

Map<String, Map<String, List<String>>> resultMap = roleLevels.stream()
        .filter(rl -> rl.getName() != null && rl.getRoleName() != null)
        .collect(Collectors.groupingBy(
                RoleLevel::getName,
                Collectors.collectingAndThen(
                        Collectors.mapping(RoleLevel::getRoleName, Collectors.toList()),
                        roleList -> Collections.singletonMap("role", roleList)
                )
        ));

// 序列化JSON逻辑和方案1完全一致

最终输出的jsonResult就是你需要的目标JSON结构。

内容的提问来源于stack exchange,提问作者naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 17:24:02