我有这样的JSON:
{
"dcsId": "1184001100000000517",
"marketCode": "US",
"languageCode": "en-US",
"profile": {
"base": {
"username": "arunima27",
"activeInd": "R",
"phone": [
{
"activeInd": "Y",
"type": "mobile",
"primaryInd": "Y",
"number": "2234566788"
},
{
"activeInd": "N",
"type": "mobile",
"primaryInd": "N",
"number": ""
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
从这个输入JSON我们需要提取payload.profile.base.phone.number,其中payload.profile.base.phone.type =="mobile"和payload.profile.base.phone.activeInd =="Y".实际上,我们需要循环遍历JSON数组(payload.profile.base.*phone)并仅获取活动且类别/类型为mobile的电话号码.
我们需要如下输出:
{
"dcsId": "1184001100000000517",
"marketCode": "US",
"languageCode": "en-US",
"username" : "arunima27",
"phoneNumber" : "2234566788"
}
Run Code Online (Sandbox Code Playgroud)
我们在为"phoneNumber"输出变量进行此转换时遇到问题.
从您的预期结果看起来您只想要第一个匹配的数字.这是dataweave正是这样做的:
%dw 1.0
%output application/json
---
{
dcsid: payload.dcsId,
markCode: payload.marketCode,
languageCode: payload.languageCode,
username: payload.profile.base.username,
phoneNumber: (payload.profile.base.phone filter ($.activeInd == 'Y' and $.type == 'mobile'))[0].number
}
Run Code Online (Sandbox Code Playgroud)
如果你想要所有匹配的电话号码,只需离开,[0]
结果中的值phoneNumber
将是一个数组(而不仅仅是第一个匹配的电话号码).
归档时间: |
|
查看次数: |
13024 次 |
最近记录: |