gpt4 book ai didi

mule - 如何在 Mule DataWeave 中过滤 JSON 数组

转载 作者:行者123 更新时间:2023-12-04 20:03:59 25 4
gpt4 key购买 nike

我有一个这样的 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": ""
}
]
}
}
}

从这个输入 JSON 中,我们需要提取 payload.profile.base.phone.number,其中 payload.profile.base.phone.type == "mobile"和 payload.profile.base.phone.activeInd == "Y"。实际上,我们需要遍历 JSON 数组 (payload.profile.base.*phone) 并仅获取处于事件状态且类别/类型为移动设备的电话号码。

我们需要如下输出:
{
"dcsId": "1184001100000000517",
"marketCode": "US",
"languageCode": "en-US",
"username" : "arunima27",
"phoneNumber" : "2234566788"
}

我们在对“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
}

如果您想要所有匹配的电话号码,只需将 [0] 留在外面,结果中 phoneNumber 的值将是一个数组(不仅仅是第一个匹配的电话号码)。

关于mule - 如何在 Mule DataWeave 中过滤 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com