«Преобразование JSON в JSON с применением groupBy» - PullRequest
0 голосов
/ 08 мая 2019

Я преобразую полезную нагрузку из 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"
        }
    }
]

Как я могу изменить свое хранилище данных, чтобы получить ожидаемый результат.

1 Ответ

2 голосов
/ 09 мая 2019

Следующий код должен работать нормально.

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

Надеюсь, это поможет.

...