如何使用正则表达式更新有效载荷字段



我需要从电话号码字段中删除所有非数字。由于传入的数据可以是任何模式,我使用的是正则表达式:/\D/。由于我使用的是版本4.2.2,而更新运算符不可用,所以我使用的更新语句。传入的有效载荷是

{
"Recipient": {
"Name": "Bob Newhart",
"MailingAddress": {
"Line1": "123 Main Street",
"Line2": "Apt 5",
"City": "Cumming",
"State": "GA",
"ZipCode": "30009",
"ZipCodePlus4": "3382"
},
"PhoneNumber": "(999) 555-1234",
"Company": "Disney"
}
}

我的第一次尝试是

%dw 2.0
output application/json
---
(payload.Recipient.PhoneNumber replace /D/ with(""))

但这并不能返回全部有效载荷。

使用更新:

%dw 2.0
import * from dw::util::Values
output application/json
---
payload update ["Recipient", "PhoneNumber"] with (payload.Recipient.PhoneNumber replace /[^d]/ with "")

因此,您已经拥有了生成所需值所需的代码,现在只需要使用update函数(https://docs.mulesoft.com/mule-runtime/4.3/dw-values-functions-update)以便替换该字段,从而获得具有更新值的整个有效负载。

或者,如果你在没有更新的情况下这样做,你可以重建像他这样的对象:

%dw 2.0
output application/json
---
{
"Recipient": {
(payload.Recipient - "PhoneNumber"),
"PhoneNumber": payload.Recipient.PhoneNumber replace /[^d]/ with ""
}
}

其中,我们从接收方对象中删除电话号码密钥,同时将该对象扩展到新的接收方对象中,允许我们创建一个新的电话号码密钥。

最新更新