Как отобразить данные в массив в Dataweave? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь отобразить некоторые существующие данные в массив: -

      "categories": [
            {
                "value": [
                    "System"
                ],
                "displayName": "API type",
                "tagType": "category",
                "dataType": "enum",
                "key": "API type"
            },
            {
                "value": [
                    "Merchandising"
                ],
                "displayName": "Domain",
                "tagType": "category",
                "dataType": "enum",
                "key": "Domain"
            }
        ]

Я хочу иметь возможность отобразить массив значений в целевое поле в моей полезной нагрузке, но отфильтровать только те, которые имеютТип ключа «Домен».

So I am trying to get a payload as follows :-

{
  "organizationId": "13445",
  "organizationName": "MyOrg",
  "assetId": "myAPI",
  "businessDomains": [
       "Sales",
       "Marketing",
       "Distribution"
  ]
}

Я пробовал Dataweave ниже, но я получаю массив массивов: -

%dw 1.0
%output application/json
---
{
    organizationId: flowVars.v_Org_Id,
    organizationName: flowVars.v_Org_Name,
    assetId: payload.assetId,
    businessDomains: (payload.categories filter ($.categories.key == 'Domain')).value
}

Может кто-нибудь предложить, какой правильный Dataweave может быть дляэтот тип запроса

1 Ответ

0 голосов
/ 22 января 2019

Вы можете попробовать использовать функцию выравнивания.

businessDomains: flatten((payload.categories filter ($.key == 'Domain')).value)

...