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

Mule 4:如何编写DataWeave表达式实现指定输出格式转换

DataWeave 转换实现方案

输入示例

[
  {
    "payload": "[{\"qty\": 6.00, \"itemKey\": \"55555\"}]",
    "deliveryNote": "",
    "deliveryDate": "2022-10-22T00:00:00.000Z",
    "shoppingCartId": "2",
    "poNumber": "iisdown",
    "customerKey": "44444",
    "id": "9018A0000007OGrQAM"
  }
]

目标输出

{
  "id": "9018A0000007OGrQAM",
  "customerKey": "44444",
  "deliveryDate": "2022-10-22T00:00:00.000Z",
  "poNumber": "testingpo",
  "shoppingCartId": "2",
  "deliveryNote": "testing",
  "lines": [
    {
      "itemKey": "55555",
      "qty": 5
    }
  ]
}

DataWeave 表达式

%dw 2.0
output application/json
---
payload[0] mapObject (value, key) -> {
    (key): value 
} 
- "payload" 
++ {
    lines: read(payload[0].payload, "application/json") map (line) -> {
        itemKey: line.itemKey,
        qty: 5 as Number
    },
    poNumber: "testingpo",
    deliveryNote: "testing"
}

代码说明

  1. 提取目标对象:输入是包含单个对象的数组,用payload[0]取出数组内的目标对象
  2. 保留原有字段:通过mapObject遍历原对象的所有键值对,保留id、customerKey、deliveryDate、shoppingCartId这些不需要修改的字段
  3. 移除冗余字段:用- "payload"删除原对象中的payload字段
  4. 解析并转换lines数组:使用read()函数将原payload字段的JSON字符串解析为数组,再通过map遍历数组,修改qty为指定值5,保留itemKey
  5. 替换指定字段值:直接给poNumber和deliveryNote赋值为需求中的新值,通过++合并到结果对象中

内容的提问来源于stack exchange,提问作者ilya.fastiv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:45:47