【问题标题】:"Transform JSON to JSON with applying groupBy"“通过应用 groupBy 将 JSON 转换为 JSON”
【发布时间】:2019-05-08 18:47:16
【问题描述】:

我正在通过应用 groupBy 条件将有效负载从 json 转换为 json,但我没有得到我想要的正确数据。 我必须对员工进行分组并列出他的所有任务。 目前我可以申请 groupBy 员工,但他的所有任务都没有显示。

有效载荷是:

[
    {
        "Id": 1,
        "EmployeeName": "AA",
        "Task": {
            "TaskName": "Deploy"
        }
    },
    {
        "Id": 1,
        "EmployeeName": "AA",
        "Task": {
            "TaskName": "Test"
        }
    },
    {
        "Id": 3,
        "EmployeeName": "BB",
        "Task": {
            "TaskName": "Deploy"
        }
    }
]

这是我的转换代码:

%dw 1.0
%output application/json
---
(payload groupBy ($.EmployeeName ++ $.Id)) map {
    EmployeeName : $[0].EmployeeName,
    Email : $[0].Email,
    Task: $[0].Task  
}

这就是我得到的:

[
    {
        "EmployeeName": "AA",
        "Task": {
            "TaskName": "Deploy"
        }
    },
    {
        "EmployeeName": "BB",
        "Task": {
            "TaskName": "Deploy"
        }
    }
]

预期结果:

[
    {
        "EmployeeName": "AA",
        "Task1": {
            "TaskName": "Deploy"
        },
        "Task2": {
            "TaskName": "Test"
        }
    },
    {
        "EmployeeName": "BB",
        "Task1": {
            "TaskName": "Deploy"
        }
    }
]

如何修改我的 dataweave 以获得预期的结果。

【问题讨论】:

    标签: mule mule-studio mule-component anypoint-studio mule-esb


    【解决方案1】:

    以下代码应该可以正常工作。

    %dw 1.0
    %output application/json
    ---
    payload groupBy ($.Id ++ $.EmployeeName) map {
        EmployeeName : $[0].EmployeeName,
        ({Task : {($.Task map {
            ('Task' ++ $$ + 1) : $
        })}})
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 2017-07-20
      相关资源
      最近更新 更多