简体   繁体   English

Dataweave - 替换对象中字段的值

[英]Dataweave - Replace value of a field in an object

I have a Java Object as input payload:我有一个Java Object作为输入有效负载:

{
"name"="Michael",
"surname"="Alpha",
"mail"="demo@gmail.com",
"gender"="Male"
}

I want change the gender value keeping the rest of the message :我想更改保留其余消息的性别值:

%dw 2.0
output application/java
---
gender: if(payload.gender == "Male") "" else payload.gender

But it return only the gender field.但它只返回性别字段。 How can I solve that?我该如何解决?

The dataweave script needs to match your output structure and you are only outputting a single gender field. dataweave 脚本需要匹配您的输出结构,并且您只输出一个性别字段。

One quick way yo just modify the current payload is using payload ++ .只需修改当前有效负载的一种快速方法是使用payload ++

If your payload is a map/object it will just replace the key if it exists or adds it if not.如果您的有效负载是地图/对象,它只会在存在时替换键,如果不存在则添加它。 Example:例子:

%dw 2.0
output application/java
---
payload ++ {gender: (if (payload.gender == "male") ""  else payload.gender)}

The dataweave script can be simplified since 4.3.0 Runtime version with the followed way:从 4.3.0 Runtime 版本开始可以通过以下方式简化 dataweave 脚本:

%dw 2.0
output application/java
---
payload update {
       case .gender -> if(payload.gender == "Male") "" else payload.gender
       
}

Example: example changing field value Mule 4.3示例: 更改字段值 Mule 4.3 的示例

Link doc: change value Mule 4.3链接文档: 更改值 Mule 4.3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM