-2

There is an array of parent elements that you need to duplicate for each child sku element you have.

Input:

{
"items": [
    {
        "order": "ASD51247",
        "reference": "271559410",
        "date": "2022-04-01T22:58:19.077Z",
        "lines": [
            {
                "number": "6578523423489",
                "description": "ITEM 1"
            }
        ],
        "received": "2022-03-31T09:46:13.260Z",
        "created": "2022-03-31T09:46:13.109Z"
    },{
        "order": "AST927353",
        "reference": "271944522",
        "date": "2022-04-01T22:58:19.038Z",
        "lines": [
            {
                "number": "4563252696546",
                "description": "ITEM 2"
            },
            {
                "number": "890456234326",
                "description": "ITEM 3"
            }
        ],
        "received": "2022-03-31T10:25:08.508Z",
        "created": "2022-03-31T10:25:08.353Z"
    }
]}

Expected Output:

{ "item":[
  {
     "order":"ASD51247",
     "reference":"271559410",
     "date":"2022-04-01T22:58:19.077Z",
     "number":"6578523423489",
     "description":"ITEM 1",
     "receivedAt":"2022-03-31T09:46:13.260Z",
     "createdAt":"2022-03-31T09:46:13.109Z"
  },
  {
     "order":"AST927353",
     "reference":"271944522",
     "date":"2022-04-01T22:58:19.038Z",
     "number":"4563252696546",
     "description":"ITEM 2",
     "received":"2022-03-31T10:25:08.508Z",
     "created":"2022-03-31T10:25:08.353Z"
  },
  {
     "order":"AST927353",
     "reference":"271944522",
     "date":"2022-04-01T22:58:19.038Z",
     "number":"890456234326",
     "description":"ITEM 3",
     "received":"2022-03-31T10:25:08.508Z",
     "created":"2022-03-31T10:25:08.353Z"
  }]}

In output, must be inherit the parent elements for each child in the "lines" array. Any help would be appreciated. Thank you.

Salim Khan
  • 4,233
  • 11
  • 15
  • Hopefull the first object in the output has createdAt and receivedAt misspelled? Should have been created and received respectively? – Salim Khan Apr 22 '22 at 03:38

2 Answers2

2
%dw 2.0
output application/json
---
item: payload.items flatMap ((item, index) ->

        (item.lines map {
       order: item.order,
       reference:item.reference,
       date: item.date,
       number: $.number,
       description: $.description,
       received: item.received,
       created:item.created

   })
 
 )

Modifying Imtiyaz's answer a bit

%dw 2.0
output application/json
---
{
    items: (payload.items ) flatMap ((item, index) ->  (
        item.lines map ((line) -> (item - 'lines' - "received" - "created ") ++ {
            description: line.description,
            number: line.number,
            created: item.created,
            received: item.received
        })
    ))
}

Salim Khan
  • 4,233
  • 11
  • 15
1

try below script.

%dw 2.0
output application/json
---
{
    items: payload.items flatMap ((item, index) -> (
        item.lines map ((line) -> (item - 'lines') ++ {
            description: line.description
        })
    ))
}
Imtiyaz Qureshi
  • 281
  • 1
  • 3