我正在尝试使用dataweave匹配输入有效负载中的特定值。
输入:
{
"drives": [{
"id": "0AEzOyzyCb7Uk9PVA",
"name": "SFJob-2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "SFJobs-2020-11"
} ],
"nextPageToken": "~!!~AI9FV7RV4uSXy20zpCBTP2LFWCXS0c"
},
{
"drives": [{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "Dev2020-11"
}],
"nextPageToken": "~!!~AI9P2LFWCXS0c"
}如何检查Dev2020-10的值是否存在。
我正在使用下面的代码给我错误。
%dw 2.0
output application/json
---
payload.drives filter ((item, index) -> item.name == 'Dev2020-10')预期输出:
[{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"}]
我如何才能做到这一点?
发布于 2020-11-11 20:44:36
首先,输入无效。我假设它是一个JSON数组,所以我将其括在括号中:[ {..},{..} ]。
之后,您将注意到过滤器需要一个单独的对象,但因为它是一个数组,所以您需要首先映射它。为了返回单个数组,我使用了flatMap():
%dw 2.0
output application/json
---
payload flatMap $.drives filter ((item, index) -> item.name == 'Dev2020-10')输出:
[
{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}
]发布于 2020-11-18 17:14:42
解决方案可以认为是两个步骤:
根据搜索条件filter ((item, index) -> item.name == "Dev2020-11"),
解决方案是:
%dw 2.0
output application/json
var inputArray = [
{
"drives": [{
"id": "0AEzOyzyCb7Uk9PVA",
"name": "SFJob-2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "SFJobs-2020-11"
} ],
"nextPageToken": "~!!~AI9FV7RV4uSXy20zpCBTP2LFWCXS0c"
},
{
"drives": [{
"id": "0AEz3mOyzyCb7Uk9PVA",
"name": "Dev2020-10"
}, {
"id": "0AMEHi1wsq-8FUk9PVA",
"name": "Dev2020-11"
}],
"nextPageToken": "~!!~AI9P2LFWCXS0c"
}
]
---
flatten(inputArray.drives) filter ((item, index) -> item.name == "Dev2020-11") 要了解有关flatten方法的更多信息,请参阅文档:mule 4 doc
https://stackoverflow.com/questions/64784201
复制相似问题