首页 > 解决方案 > 与 Dataweave 相关的问题

问题描述

我需要根据类似的“键”值将来自 responseLicensing 的数据(如 expiryDate、cloudAccountName、cloudAccountId)附加到 responseSfdc 数据。

使用 responseSfdc 实例中的键在 responseLicensing 对象中执行查找,并将作为成功查找的结果挑选的一些键值对附加到 responseSfdc 对象。

%dw 2.0
output application/json 

var responseSfdc = [{
    "key": "SUBT00009925-1",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null
  },
  {
    "key": "SUBT00009925-2",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null
  }]

var responseLicensing = [{
    "key": "SUBT00009925-1",
    "expiryDate": "2021-01-16"
  },
  {
    "key": "SUBT00009925-2",
    "expiryDate": "2021-01-16",
    "cloudPublicName": "dodp-testcloud",
    "cloudAccountId": "a-t-1000-5001-0687-0024"
  }]
---
{
    responseSfdc map (sfdc,i) -> {
        
    }
}

我需要的输出是这样的 -

[{
    "key": "SUBT00009925-1",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null,
    "expiryDate": "2021-01-16"
  },
  {
    "key": "SUBT00009925-2",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null,
    "expiryDate": "2021-01-16",
    "cloudPublicName": "dodp-testcloud",
    "cloudAccountId": "a-t-1000-5001-0687-0024"
  }]

标签: dataweavemulesoft

解决方案


似乎是leftJoin()函数的工作。

[%dw 2.0
output application/json 
import * from dw::core::Arrays

var responseSfdc = \[{
    "key": "SUBT00009925-1",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null
  },
  {
    "key": "SUBT00009925-2",
    "contractEndDate": null,
    "product": {
      "productName": "ArtPro+ Subscription",
      "productCode": "ArtPro+S",
      "downloadURL": null,
      "upgradeProduct": null
    },
    "projectReference": null,
    "orderNumber": "O-0000001105",
    "orderCreationDate": "2020-07-14T07:48:04.000Z",
    "subscriptionName": null,
    "autoRenewal": null
  }\]

var responseLicensing = \[{
    "key": "SUBT00009925-1",
    "expiryDate": "2021-01-16"
  },
  {
    "key": "SUBT00009925-2",
    "expiryDate": "2021-01-16",
    "cloudPublicName": "dodp-testcloud",
    "cloudAccountId": "a-t-1000-5001-0687-0024"
  }\]
---
leftJoin( responseSfdc, responseLicensing,  (sfdc) -> sfdc.key, (license) -> license.key)  map ($.l ++ ($.r - "key"))][1]

推荐阅读