Как отобразить данные в массив в Dataweave?

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

      "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 ответ

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

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

Другие вопросы по тегам