Как отлаживать функцию MAP в Dataweave?

Я получаю из источника json ниже:

{
    "totalRows": 2,
    "startRow": 1,
    "endRow": 2,
    "hasNextPage": false,
    "searchResults": {
        "603": {
            "dDocOwner": "sysadmin",
            "dIndexedID": "603",
            "dDocAuthor": "sysadmin",
            "dDocCreator": "sysadmin"
        },
        "3011": {
            "dDocOwner": "sysadmin",
            "dIndexedID": "3011",
            "dDocAuthor": "sysadmin",
            "dDocCreator": "sysadmin"
        }
    }
}

Я хочу преобразовать вышеуказанный запрос в целевой запрос, как показано ниже:

{
"data" : [
{
   "ID":"603",
   "Creator":"6141",
   "Author":"sysadmin",
   "Owner":"sysadmin"},
{
   "ID":"3011",
   "Creator":"6141",
   "Author":"sysadmin",
   "Owner":"sysadmin"}
   ]
}

Я создал приведенное ниже сопоставление в Dataweave, но оно не работает, не могли бы вы дать мне несколько указателей на то же самое:

%dw 1.0
%output application/json skipNullOn="objects"
---
{
    "data": (payload.searchResults.* map ((payload01 , indexOfPayload01) ->{
	"id": payload01.dIndexedID,
   "Creator": payload01.dDocCreator,
   "Author": payload01.dDocName,
   "Owner": payload01.dDocOwner,
}) when (sizeOf payload) >= 1  otherwise [])
}


person user3368821    schedule 13.08.2018    source источник


Ответы (1)


Вы сопоставляете объект с массивом, pluck идеально подходит для этого!

%dw 1.0
%output application/json
---
{
  data: payload.searchResults pluck ((docObject) -> {
    ID:      docObject.dDocIndexedID,
    Creator: docObject.dDocCreator,
    Author:  docObject.dDocAuthor,
    Owner:   docObject.dDocOwner
  })
}
person jerney    schedule 13.08.2018