Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule Dataweave检查值是否包含在YAML列表中_Mule_Dataweave_Mule4 - Fatal编程技术网

Mule Dataweave检查值是否包含在YAML列表中

Mule 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") } 但这并不能解决我的问题。因为我想做一个精确的

我想检查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")
}

但这并不能解决我的问题。因为我想做一个精确的字符串匹配。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
}
请注意,如果任何条目包含逗号,它也将被拆分