"Transform JSON to JSON with applying groupBy"

"Transform JSON to JSON with applying groupBy"

我正在通过应用 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"
        }
    }
]

如何修改我的数据编织以获得预期的结果。

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

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

希望对您有所帮助。