首页 > 解决方案 > 如何使用正则表达式更新有效负载字段

问题描述

我需要从电话号码字段中删除所有非数字。由于传入的数据可以是任何模式,我使用正则表达式:/\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(""))

但这不会返回整个有效载荷。

标签: dataweavemule4

解决方案


使用更新:

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

所以你已经有了生成你想要的值所需的代码,现在你只需要按顺序使用更新功能(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 ""
    }
}

我们从收件人对象中删除 phonenumber 键,同时将该对象扩展为我们的新收件人对象,从而允许我们创建一个新的 phonenumber 键。


推荐阅读