Mule Dataweave检查值是否包含在YAML列表中
我想检查YAML列表中是否存在该值 我有产品。yamlMule Dataweave检查值是否包含在YAML列表中,mule,dataweave,mule4,Mule,Dataweave,Mule4,我想检查YAML列表中是否存在该值 我有产品。yaml intGrp: - "A" - "CD" - "EF" - "ABC" - "CDEF" 从转换消息我想检查 If(intGrp包含payload.myvalue)这是另一个 尝试 %dw 2.0 var prop = Mule::p('intGrp') output application/json --- { a: prop contains ("A") } 但这并不能解决我的问题。因为我想做一个精确的
intGrp:
- "A"
- "CD"
- "EF"
- "ABC"
- "CDEF"
从转换消息我想检查
If(intGrp包含payload.myvalue)这是另一个
尝试
%dw 2.0
var prop = Mule::p('intGrp')
output application/json
---
{
a: prop contains ("A")
}
但这并不能解决我的问题。因为我想做一个精确的字符串匹配。i、 如果我给
a:prop contains(“AB”)
我应该得到一个false,因为没有产品是“AB”
任何帮助都将不胜感激。
谢谢问题在于YAML数组在属性中被解释为逗号分隔的字符串。contains()函数在字符串中的工作方式与在数组中的工作方式不同。它在字符串中搜索匹配的子字符串,因此“AB”返回true。可以使用splitBy()DataWeave函数将字符串转换回数组。我将两者并排展示以突出区别:
%dw 2.0
var prop = Mule::p('intGrp')
var propArray = Mule::p('intGrp') splitBy ','
output application/json
---
{
raw: prop,
array: propArray,
a: propArray contains ("A"),
ab: propArray contains ("AB")
}
输出为:
{
"raw": "A,CD,EF,ABC,CDEF",
"array": [
"A",
"CD",
"EF",
"ABC",
"CDEF"
],
"a": true,
"ab": false
}
请注意,如果任何条目包含逗号,它也将被拆分。问题是YAML数组在属性中被解释为逗号分隔的字符串。contains()函数在字符串中的工作方式与在数组中的工作方式不同。它在字符串中搜索匹配的子字符串,因此“AB”返回true。可以使用splitBy()DataWeave函数将字符串转换回数组。我将两者并排展示以突出区别:
%dw 2.0
var prop = Mule::p('intGrp')
var propArray = Mule::p('intGrp') splitBy ','
output application/json
---
{
raw: prop,
array: propArray,
a: propArray contains ("A"),
ab: propArray contains ("AB")
}
输出为:
{
"raw": "A,CD,EF,ABC,CDEF",
"array": [
"A",
"CD",
"EF",
"ABC",
"CDEF"
],
"a": true,
"ab": false
}
请注意,如果任何条目包含逗号,它也将被拆分