我有这个有效负载和 dataweave 代码,但在下面的 dataweave 小于工作但不等于?有人可以帮忙吗..如何处理平等?
有效负载:
[{
"Id": "1",
"countryName": "Austria"
},
{
"Id": "2",
"countryName": "Belgium"
},
{
"Id": "3",
"countryName": "Canada"
},
{
"Id": "4",
"countryName": "Dutch"
}]
Datweave:
%dw 2.0
output application/json
---
payload filter ($.countryName >= "A" and $.countryName <= "D")
输出:
[
{
"Id": "1",
"countryName": "Austria"
},
{
"Id": "2",
"countryName": "Belgium"
},
{
"Id": "3",
"countryName": "Canada"
}
]
期待:
我期待输出中也出现以“D”开头的国家名称
您可以尝试下面的DataWeave,它可以过滤所有以A到D开头的国家/地区名称
%dw 2.0
output application/json
---
payload filter ((item,index) -> item.countryName matches /^([ABCD]).*/)
此脚本会过滤输入有效负载,以仅包含那些国家名称按预期以“A”、“B”、“C”或“D”开头的对象。正则表达式 ^([ABCD]).* 有效地捕获以任意字母“A”到“D”开头的国家/地区名称。在字符串 (^) 开头之后使用字符类 [ABCD] 可确保只有符合条件的项目才会包含在输出中。
问题在于以字符开头的单词总是大于该字符。这个条件是错误的。如果您使用索引选择器更改条件以仅过滤国家/地区的第一个字符,则它会起作用:
%dw 2.0
output application/json
---
payload filter ($.countryName[0] >= "A" and $.countryName[0] <= "D")
输出:
[
{
"Id": "1",
"countryName": "Austria"
},
{
"Id": "2",
"countryName": "Belgium"
},
{
"Id": "3",
"countryName": "Canada"
},
{
"Id": "4",
"countryName": "Dutch"
}
]