如何在数据编织中转换后追加数据

how to append data after transform in dataweave

我有一个数组负载,其中包含一项和一个对象。 我需要转换对象数据然后附加那些项目。 我可以使用下面的代码来转换名称为属性的对象, 但是如何像下面的输出那样附加单个项目。

脚本

payload map (item) ->
(
    item.attributes reduce ((item, accumulator={}) -> 
    {
        (accumulator),
        (item.name): item.value
          }
)
)

输出

[
  {
    "store": "007878",
    "inventoryDate": "20201124",
    "varianceArticleNumber": "dddrrr"
  },
  {
     "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  },
    {
     "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  },
    {
     "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  }
]

输入

[
  {
    "store": "007878",
    "attributes": [
      {
        "name": "inventoryDate",
        "value": "20201124"
      },
      {
        "name": "varianceArticleNumber",
        "value": "NF006002CC21140000"
      }      
    ]
  },
  {
    "store": "007878",
    "attributes": null
  },
  {
    "store": "007878",
    "attributes": null
  },
  {
    "store": "007878",
    "attributes": null
  }
]

实现此目的的一种方法是在 item.attributes 为 null 的情况下使用默认值。这样做对输入数组中的所有元素进行相同的处理。

output application/json
var defaultAttributes=[
    {
        "name": "inventoryDate",
        "value": ""
    },
    {
        "name": "varianceArticleNumber",
        "value": ""
    }          
]
---
payload map (item) ->
{
    store: item.store,
    (
        
        item.attributes default defaultAttributes reduce ((item, accumulator={}) -> 
            {
                (accumulator),
                (item.name): item.value
            }
        )
    ) 
}

输出:

[
  {
    "store": "007878",
    "inventoryDate": "20201124",
    "varianceArticleNumber": "NF006002CC21140000"
  },
  {
    "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  },
  {
    "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  },
  {
    "store": "007878",
    "inventoryDate": "",
    "varianceArticleNumber": ""
  }
]