我有一个类似结构的对象。我需要在开始日期和结束日期过滤ProductInfo
个对象,即使任何一个修订日期都在该区间内,也可以选择它。我有用户输入,开始日期和结束日期作为哈希
{
productInfo : [
{
Id: XXX,
Revisions:[
{
startDate : yyyy
endDate : zzz
}
{
startDate : yyyy
endDate : zzz
}
]
and more productInfo objects.....
]}
映射流变量。
我无法分享我的配置。任何人都可以帮助我使用上述方案的dataWeave
语法。
由于
答案 0 :(得分:0)
为此,我们可以在Header中声明函数并从DataWeave体中引用它。在这里,我使用以下JSON输入:
{
"productInfo": [
{
"Id": "1",
"Revisions": [
{
"startDate": "20160101",
"endDate": "20160131"
},
{
"startDate": "20160201",
"endDate": "20160229"
}
]
},
{
"Id": "2",
"Revisions": [
{
"startDate": "20160301",
"endDate": "20160330"
},
{
"startDate": "20160401",
"endDate": "20160430"
}
]
}
]
}
使用此脚本测试它:
%dw 1.0
%output application/json
%var filterStartDate = "20160101" //flowVars.inputDate["startDate"]
%var filterEndDate = "20160130" //flowVars.inputDate["endDate"]
%function evaluateRevisions(revisions) (
(revisions map {
evaluated: ($.startDate <= filterStartDate) and ($.endDate >= filterEndDate)
})
)
---
payload.productInfo map using (productInfo = $) {
filteredProduct: productInfo,
found: evaluateRevisions($.Revisions).evaluated contains true
} filter $.found
我可以根据输入日期(startDate和endDate)得到productInfo:
[
{
"filteredProduct": {
"Id": "1",
"Revisions": [
{
"startDate": "20160101",
"endDate": "20160131"
},
{
"startDate": "20160201",
"endDate": "20160229"
}
]
},
"found": true
}
]