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

如何在Mule DataWeave中更新已有Payload值?代码修正求助

DataWeave问题解决:替换非空的placeId值

你的代码核心问题是update函数用法错误:update需要传入字段选择器定位要修改的字段,而非直接传入字段的值。下面是两种正确的实现方式:

方式1:使用update函数的正确写法

%dw 2.0
output application/json
import update from dw::util::Values

var referralPayload = {"data":1,"placeId":"BSSE","topValue":1000}
---
referralPayload update $.placeId with (if (referralPayload.placeId != null and referralPayload.placeId != "") referralPayload.topValue else referralPayload.placeId)

方式2:更简洁的对象字段覆盖写法(推荐)

无需导入update函数,直接通过对象字面量修改字段,代码更易读:

%dw 2.0
output application/json

var referralPayload = {"data":1,"placeId":"BSSE","topValue":1000}
---
referralPayload {
    placeId: if (placeId != null and placeId != "") topValue else placeId
}

关键说明

  • 原代码中update(referralPayload.placeId)是错误的,应使用$.placeId作为选择器($代表当前对象,$.placeId指向要修改的字段路径)。
  • 方式2中,对象的{}内部可直接引用原对象字段(如placeId、topValue),无需添加referralPayload前缀,DataWeave会自动识别作用域。

两种写法执行后都会得到预期结果:

{
"data": 1,
"placeId": "1000",
"topValue": 1000
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:01:04