如何在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
相关产品推荐
相关产品推荐

