比较mule 4中的两个值
我尝试比较choice connector中的以下两个值,并尝试从值2和值1的值中捕捉缺少的值 价值1:比较mule 4中的两个值,mule,dataweave,mule4,Mule,Dataweave,Mule4,我尝试比较choice connector中的以下两个值,并尝试从值2和值1的值中捕捉缺少的值 价值1: [ { "FName": "salesforce.com" }, { "FName": "jobs" }, { "FName": "2020" }, { "FName": "06-2
[
{
"FName": "salesforce.com"
},
{
"FName": "jobs"
},
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
价值2:
[
{
"name": "salesforce.com"
},
{
"name": "jobs"
}
]
Am使用选择条件vars.NameVar==vars.SplitName
我需要捕获值“FName”:“2020”和“FName”:“06-2020”,它们在值2中缺失
%dw 2.0
output application/json
import * from dw::core::Arrays
var a=[
{
"FName": "salesforce.com"
},
{
"FName": "jobs"
},
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
var b=[
{
"name": "salesforce.com"
},
{
"name": "jobs"
}
]
---
leftJoin(a, b, (x) -> x.FName, (x) -> x.name)
filter !$.r?
map $.l
输出:
[
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
试试这个脚本。这将只显示从value1到value2不匹配的项目 输入:
%dw 2.0
var value1=[
{
"FName": "salesforce.com"
},
{
"FName": "jobs"
},
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
var value2=[
{
"name": "salesforce.com"
},
{
"name": "jobs"
}
]
output application/json
---
value1[?(!(value2.name contains $.FName))]
[
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
输出:
%dw 2.0
var value1=[
{
"FName": "salesforce.com"
},
{
"FName": "jobs"
},
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
var value2=[
{
"name": "salesforce.com"
},
{
"name": "jobs"
}
]
output application/json
---
value1[?(!(value2.name contains $.FName))]
[
{
"FName": "2020"
},
{
"FName": "06-2020"
}
]
诀窍是使用包含和!符号。如果您卸下它将反转逻辑,只显示匹配值。这些变量(vars.NameVar、vars.SplitName)与此问题之间有什么关系?没有提到选择,也没有来自这些变量的数据用于您的问题。我认为它们与另一个问题有关,可以从这个问题中删除。感谢逻辑,我可以像这样调用import*从dw::core::Arrays vars.variableA vars.variablebaleb---leftJoin(variableA,variableA,(variableA)->variableA.FName,(variableB)->variablebea.name)filter!$。Rmap$.lYou可以在dataweave脚本中使用前面在mule流中定义的任何变量。像这样的引用
var.yourVariableName
脚本演示了该方法。正如@shortstackstevens所解释的,您可以使用来自变量或负载的输入。这个问题很难理解你的意思。我更改了示例,以避免在不需要的地方使用a和b。您只需要替换剩下的a和b的唯一实例。