You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule中如何将指定JSON结构转换为拆分后的Map集合?

JSON转多Map结构解决方案

输入JSON格式

{
  "actos-evaluacion": [
    {
      "subject": "<id-subject>",
      "name": "<name>",
      "marks": ["<student_id>:<mark>", "<student_id>:<mark>", "<student_id>:<mark>"]
    },
    {
      "subject": "<id-subject>",
      "name": "<name>",
      "marks": ["<student_id>:<mark>", "<student_id>:<mark>"]
    }
  ]
}

目标输出结构

每个学生对应一个独立的Map,最终形成一维列表:

[
  {
    "id_subject": "<id-subject>",
    "name": "<name>",
    "student_id": "<student_id>",
    "mark": "<mark>"
  },
  ...
]

实现方式(以DataWeave 2.x为例,适用于MuleSoft场景)

%dw 2.0
output application/json
---
flatten(payload."actos-evaluacion" map (evalItem) -> 
    evalItem.marks map (markStr) -> {
        id_subject: evalItem.subject,
        name: evalItem.name,
        student_id: (markStr splitBy ":")[0] trim,
        mark: (markStr splitBy ":")[1] trim as Number
    }
)

逻辑说明

  1. 外层遍历actos-evaluacion数组的每个科目项,保留当前项的subject和name上下文
  2. 内层遍历当前科目项的marks数组,拆分每个student_id:mark格式的字符串
  3. 用trim处理字符串中的冗余空格,as Number将分数转为数字类型(不需要可省略)
  4. flatten将嵌套数组展开为一维数组,得到每个学生对应一个Map的结果

其他语言实现示例(Java)

List<Map<String, Object>> resultList = new ArrayList<>();
// 假设已将原始JSON解析为JSONObject对象
JSONArray evalArray = jsonObj.getJSONArray("actos-evaluacion");

for (int i = 0; i < evalArray.length(); i++) {
    JSONObject evalItem = evalArray.getJSONObject(i);
    String subjectId = evalItem.getString("subject");
    String subjectName = evalItem.getString("name");
    JSONArray marksArray = evalItem.getJSONArray("marks");

    for (int j = 0; j < marksArray.length(); j++) {
        String markEntry = marksArray.getString(j).trim();
        String[] parts = markEntry.split(":");
        
        Map<String, Object> studentMap = new HashMap<>();
        studentMap.put("id_subject", subjectId);
        studentMap.put("name", subjectName);
        studentMap.put("student_id", parts[0].trim());
        studentMap.put("mark", Integer.parseInt(parts[1].trim()));
        
        resultList.add(studentMap);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:25:20