dataweave - 如何使用正则表达式更新有效负载字段
问题描述
我需要从电话号码字段中删除所有非数字。由于传入的数据可以是任何模式,我使用正则表达式:/\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 "")
所以你已经有了生成你想要的值所需的代码,现在你只需要按顺序使用更新功能(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 键。
推荐阅读
- java - 意外的 ArrayList 大小
- sql - 具有重新启动增量的 Oracle SQL 行计数器
- android - Kotlin 代码从可变列表中删除一种特定类型的重复对象
- mysql - mysql 的不同结果匹配左连接表上的全文搜索
- anypoint-studio - 将 JSON 对象的元素作为数组返回
- javascript - Navber 不更新移动设备上的内容
- python - 如何为缺失值添加数据
- regex - 正则表达式提取“SELECT [whatever] FROM INSERTED”
- vue.js - HTML5 画布工件
- ios - 在 UICollectionView 中点击单元格返回错误的索引