You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DataWeave 2.0基于两个输入Payload构建目标JSON Payload

问题

现有两个输入Payload:

  • Payload #1:员工动态字段数据(示例含2个字段)
  • Payload #2:所有字段的元数据信息

需使用DataWeave 2.0构建Payload #3,将Payload #1的每个字段值与Payload #2中对应元数据结合,生成包含employeeParamValue及完整元数据的parameters数组。

Payload #1 示例

{
  "employee": [
    {
      "Employee_Number": "123456",
      "Country_of_Birth": "USA"
    }
  ]
}

Payload #2 示例

[
  {
    "employeeMetaColumn": "Employee_Number",
    "employeeMetaText": "Employee Number",
    "employeeMetaType": "SECT",
    "employeeMetaId": 435
  },
  {
    "employeeMetaColumn": "Country_of_Birth",
    "employeeMetaText": "Country of Birth",
    "employeeMetaType": "SECT",
    "employeeMetaId": 345
  },
  {
    "employeeMetaColumn": "Years_Completed",
    "employeeMetaText": "Years Completed",
    "employeeMetaType": "FLD",
    "employeeMetaId": 427
  },
  {
    "employeeMetaColumn": "First_Name",
    "employeeMetaText": "First Name",
    "employeeMetaType": "SECT",
    "employeeMetaId": 998
  }
]

目标Payload #3 示例

{
  "parameters": [{
      "employeeParamValue": ["123456"],
      "employeeMetaColumn": "Employee_Number",
      "employeeMetaText": "Employee Number",
      "employeeMetaType": "SECT",
      "employeeMetaId": 435
    },
    {
      "employeeParamValue": ["USA"],
      "employeeMetaColumn": "Country_of_Birth",
      "employeeMetaText": "Country of Birth",
      "employeeMetaType": "SECT",
      "employeeMetaId": 345
    }
  ]
}

解决方案

以下是实现需求的DataWeave 2.0代码:

%dw 2.0
output application/json
// 将元数据数组转换为以字段名为键的对象,方便快速查找
var metaLookup = payload2 reduce ((item, acc = {}) -> acc ++ {(item.employeeMetaColumn): item})
// 获取员工数据(示例中employee数组仅含一个对象,取第一个元素)
var employeeData = payload1.employee[0]
---
{
  parameters: employeeData pluck ((value, key) -> 
    // 匹配对应元数据,添加employeeParamValue字段
    metaLookup[key] ++ { employeeParamValue: [value] }
  )
}

代码说明

  1. metaLookup变量:通过reduce将Payload #2的元数据数组转换为键值对对象,键为employeeMetaColumn的值,值为对应的元数据对象,这样可以快速通过字段名查找元数据,避免多次遍历数组。
  2. employeeData变量:提取Payload #1中employee数组的第一个元素(示例中仅一个员工数据)。
  3. 生成parameters数组:使用pluck遍历员工数据的每个键值对,找到对应的元数据后,合并元数据对象与employeeParamValue字段(将字段值包装为数组),最终组成parameters数组。

内容的提问来源于stack exchange,提问作者Sunny85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:33:29